2013-08-13 3 views
0

У меня вопрос о том, как php измеряет область действия при использовании глобальной команды с переменными. У меня есть две функции в той же области моего PHP-кода. В loopitback глобальная команда работает так, как ожидалось. В loopitback_two глобальная команда не захватывает $ global_arr. Я сделал тест с использованием сессионных варов, и он отлично работает.PHP Глобальная область видимости переменных не одинакова между функциями

Мне кажется, что эти две функции идентичны, поэтому я смотрю на кого-то с большей мудростью.

Благодарим вас за то, что нашли время, чтобы прочитать это.

EDIT: ДОБАВЛЕНО MORE КОД

$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

Что такое точное сообщение об ошибке? – Mike

ответ

0

Вы должны инициализировать глобальные переменные в вашем construct .because даже вы определили его как GLOBAL, его экземпляр только в том, что function.And будет переопределить его в следующем функция, если вы упоминаете вратаря на construct как

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

EDIT: В случае вашего редактирования, определить $global_arr в global variable в то время как он initiaizing ..

global $global_arr = array(); 

function save_the_arr($sql_row1) { 

} 

См THIS, если Вам необходима дополнительная информация ..

+1

Что вы понимаете, инициализируя его на '' const''? Попробуйте предоставить примерный код. – Mike

+0

@Mike see my edit please – Gautam3164

+1

OP даже не упоминал, был ли это ООП или процедурный. – Mike

Смежные вопросы