2013-08-13 1 views
0

J'ai une question sur la façon dont php mesure la portée lors de l'utilisation de la commande globale avec des variables. J'ai deux fonctions dans la même portée de mon code php. Dans loopitback, la commande globale fonctionne comme prévu. Dans loopitback_two, la commande globale n'attrape pas le $ global_arr. J'ai fait un test en utilisant des variables de session et ça fonctionne bien.PHP La portée des variables globales n'est pas la même entre les fonctions

Il me semble que ces deux fonctions sont identiques, donc je me tourne vers quelqu'un avec plus de sagesse.

Merci d'avoir pris le temps de lire ceci.

EDIT: PLUS CODE AJOUTÉE

$global_arr = array(array()); 

function save_the_arr($sql_row1) 
{ 
    global $global_arr; 

    POPULATED ARRAY 

    $_SESSION['queue']=$global_arr; 
} 

function loopitback($max) 
{ 
    global $global_arr; 

    $i = 0; 
    while($i<$max) 
    { 
     echo "<tr><td>" . $global_arr[$i][0] . "</td></tr>"; 
     $i = $i+1; 
     if($global_arr[$i][0]==NULL OR $global_arr[$i][0]=="") 
      $i=$max; 
    } 
} 

function loopitback_two($max) 
{ 
    global $global_arr; 

    $i = 0; 
    while($i<$max) 
    { 
     echo "<tr><td>" . $global_arr[$i][0] . "</td></tr>"; 
     $i = $i+1; 
     if($global_arr[$i][0]==NULL OR $global_arr[$i][0]=="") 
      $i=$max; 
    } 
} 
+0

Quel est le message d'erreur exact? – Mike

Répondre

0

Vous devez initialiser les variables globales à votre construct .Parce même vous définissez comme GLOBAL, son instance que dans ce function.And il redéfinira dans la prochaine fonction si vous na pas le mentionner sur construct comme

function __construct() { 
    global $global_arr; 
} 
function loopitback() { 
    //Do something with it 
} 
function loopitback_two() { 
    //Do something with it 
} 

EDIT: En cas de votre édition, définir le $global_arr comme global variable alors qu'il est initiaizing ..

global $global_arr = array(); 

function save_the_arr($sql_row1) { 

} 

Voir THIS si vous avez besoin de plus amples informations ..

+1

Que voulez-vous dire en l'initialisant à votre «construction»? Essayez de fournir un exemple de code. – Mike

+0

@Mike voir mon edit s'il vous plaît – Gautam3164

+1

OP n'a même pas mentionné si cela était OOP ou procédure cependant. – Mike

Questions connexes