глобальный массив в php - PullRequest
       5

глобальный массив в php

9 голосов
/ 11 декабря 2010

Я должен работать в двух разных файлах. один из них должен добавлять новый элемент в массив каждый раз, когда вызывается, и массив должен быть доступен. Что я сделал для этого:

function1(){

   global $array;

   $array[] = 'hi';

}

но он просто создает один элемент в массиве, даже если я вызываю эту функцию 4 раза.

Ответы [ 2 ]

11 голосов
/ 11 декабря 2010

То, что вы сделали, должно работать.

<?php

function function1(){

   global $array;

   $array[] = 'hi';

}
function1();
function1();
function1();
print_r($array);

Проверьте это.

У вас, вероятно, есть другая проблема. Обратите внимание, что время жизни всех переменных является текущим запуском вашего скрипта. Они не будут существовать подряд. Для этого вам нужно использовать какое-то постоянство, такое как сессия, cookie, файловая система, база данных.

Для получения дополнительной информации оставьте свой полный код.

5 голосов
/ 11 декабря 2010

Я немного сбит с толку формулировкой вашего вопроса.Когда вы говорите: «Я должен работать в двух разных файлах».Вы имеете в виду, что у вас есть «две» функции?

Если у вас две функции, пытающиеся использовать переменную $ array, вам нужно будет вызвать global $array; в обеих функциях.

причина в том, что global немного вводит в заблуждение.Все, что он на самом деле делает, - назначает ссылку на член $_GLOBALS на переменную в локальной области, имя которой совпадает с именем индекса $ _GLOBALS.Другими словами, если вы делаете что-то вроде этого:

 global $variable;

, то же самое можно сказать и так:

 $variable =& $_GLOBALS['variable'];   (assign by reference)

Фактическая переменная $variable все еще находится в области действия функции.на уровне, это просто ссылка на глобальную переменную.

Смысл этого в том, что если вы не определяете global $variable в каждой функции, вы просто создаете новую переменную внутриобъем этой функции.Когда функция завершается, переменная сбрасывается, и любые изменения, сделанные в ней внутри функции, теряются.

С учетом всего сказанного, глобальные переменные все еще имеют тенденцию быть плохой идеей.Намного понятнее, если вы просто поддерживаете локальную переменную и при необходимости передаете ее в качестве параметра другим функциям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...