У меня есть PHP-скрипт с примерно 50 глобальными переменными.
У меня есть около 18 функций, где мне нужны глобальные переменные.
Мне нужно почти 40 глобальных переменных в большинстве функций.
Я включил их сейчас как:
function example1() {
global $1, $2, $3, ..... $40;
}
function example2() {
global $1, $2, $3, ..... $40;
}
Есть ли более простой способ сделать это?
Например включить все глобальные переменные сразу?
В массиве может быть?
Я надеюсь услышать несколько хороших предложений!
Я передавал много переменных глобальным. Теперь я узнал, что я должен был на & для каждого цикла непосредственно изменять данные в массиве вместо того, чтобы объявлять их и пытаться передать их глобальным переменным.
Чтобы иметь возможность напрямую изменять элементы массива в цикле, перед $ value следует указать &, В этом случае значение будет присвоено по ссылке.
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>
Спасибо за помощь! Я мог бы удалить много кодов и переменных …
Вы можете просто включить все глобалы.
function myFunc() {
foreach ($GLOBALS as $n => $v) {
global $$n;
}
... code using any global variable
}
Или вы можете включить свой собственный предопределенный набор.
$myGlobals = array('n1','n2');
function myFunc() {
foreach ($GLOBALS['myGlobals'] as $n) {
global $$n;
}
... code using any global variable named in $myGlobals
}
В PHP есть функция extract, которая преобразует все элементы в массиве в переменные, используя их ключи, как говорится, поскольку переменная $ GLOBALS содержит все глобальные переменные, просто извлеките ее в своей функции.
$name = 'John Doe';
function myFunction(){
extract($GLOBALS);
echo $name;
}