2013-04-30 3 views
0

static $myvar = $my_array[3];

Je n'ai jamais eu besoin d'utiliser la fonction statique jusqu'à maintenant. Mais je dois l'utiliser pour stocker soit la valeur de retour d'un function ou un array:

static $myvar = $my_array[3]; 

static $myvar = my_func(); 

Pourquoi ne puis-je l'utiliser comme ça? La statique est-elle seulement utilisée pour les intergers?

+1

Où avez-vous les informations dont vous devriez utiliser 'static'? – hek2mgl

+0

Étant donné que je souhaite que la variable stocke la même valeur lorsqu'elle est appelée plusieurs fois – Nadine

+0

Les variables statiques ne peuvent contenir qu'une valeur de type statique, la valeur de retour d'une fonction ou la valeur d'une autre variable n'est pas statique. Voir ma réponse pour plus de détails. – Drahcir

Répondre

0

Jetez un oeil à PHP Static

statique est pour POO

+0

Existe-t-il une version que je peux utiliser pour PHP basé sur la fonction? – Nadine

+0

Pas autant que je sache –

0

On dirait que vous ne l'utilisez pas correctement. Reportez-vous au PHP.net: Static Keyword. Vous devez l'utiliser à l'intérieur d'une classe. Et je ne suis pas sûr si vous devez spécifier publicprivateprotected.

2

Je ne sais pas si vous recherchez ceci:

function foo() { 
    static $counter; 
    if(!$counter) { 
     $counter = 0; 
    } 

    $counter++; 
    echo $counter; 
} 

Notez que à côté de l'utilisation dans la programmation POO, le mot-clé statique peut être utilisé pour déclarer static variables dans un corps de fonction qui doit être initialisé uniquement une fois que.

appelle donc à foo() vous donnera la sortie suivante, comme $counter est initialisé que la première fois foo() est appelé:

foo(); // 1 
foo(); // 2 
0

De la page à Static Variables:

déclarations statiques sont résolus à la compilation.

Voir l'exemple 7 sur la page liée.

C'est pourquoi vous ne pouvez pas affecter $my_array[3] à une variable statique. Le contenu de la variable n'est pas connu au moment de la compilation.