У меня проблема с неопределенной переменной, когда я пытаюсь использовать массив внутри функции. Примером может служить код ниже. Как я могу получить доступ к массиву $prev
внутри функции hello()
? Я попытался выполнить поиск, но я не знаю, как использовать $GLOBALS[$varname]
когда переменная является массивом. Спасибо за любую помощь!
<?php $prev = [0,1,2]; function hello(){ echo $prev[1]; } hello(); hello(); hello(); ?>
Вы также можете передать переменную в функцию:
$prev = [0,1,2]; function hello(array $array){ echo $array[1]; } hello($prev); hello($prev); hello($prev); ?>
Другой способ – передать переменную по ссылке .
function hello(&$array){ $array[1]++; echo $array[1]; }
Это способ использовать его как глобальный. Кстати, есть и другие способы использовать его внутри функции hello.
$prev = [0,1,2]; function hello(){ global $prev; echo $prev[1]; } hello(); hello(); hello();
Вы могли бы сделать что-то вроде:
$GLOBALS["prev"] = [0,1,2]; function hello(){ echo $GLOBALS['prev'][1]; } hello();
Однако рассмотрите возможность сделать что-то вроде:
$prev = [1,2,3]; function hello($prev) { echo $prev[1]; } hello($prev);
В качестве альтернативного решения:
class GlobalsContainer { public static $prev=[1,2,3]; } function hello() { echo GlobalsContainer::$prev[1]; } hello();
Объявите массив с ключевым словом global
внутри function
. Видеть это –
<?php function hello(){ global $prev = [0,1,2]; echo $prev[1]; } ?>