У меня есть массив снаружи:
$myArr = array();
Я хотел бы предоставить свой функциональный доступ к массиву снаружи, таким образом, он может добавить значения к нему
function someFuntion(){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
Как я даю функции обзор права переменной?
По умолчанию, когда вы находитесь внутри функции, у вас нет доступа к внешним переменным.
Если вы хотите, чтобы ваша функция имела доступ к внешней переменной, вы должны объявить ее как global
внутри функции:
function someFuntion(){
global $myArr;
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
Для получения дополнительной информации см. Область видимости переменной .
Но обратите внимание, что использование глобальных переменных не является хорошей практикой : с этим ваша функция больше не является независимой.
Лучше было бы заставить вашу функцию возвращать результат :
function someFuntion(){
$myArr = array(); // At first, you have an empty array
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
return $myArr;
}
И вызывать функцию следующим образом:
$result = someFunction();
Ваша функция также может принимать параметры и даже работать с параметр, переданный по ссылке :
function someFuntion(array & $myArr){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
}
Затем вызовите функцию следующим образом:
$myArr = array( ... );
someFunction($myArr); // The function will receive $myArr, and modify it
С помощью этого:
Для получения дополнительной информации об этом, вы должны прочитать раздел Функции руководства по PHP и, особенно, следующие подразделы:
Global $myArr;
$myArr = array();
function someFuntion(){
global $myArr;
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
Предупреждаем, обычно люди сторонятся глобальных переменных, поскольку у них есть свои недостатки.
Вы можете попробовать это
function someFuntion($myArr){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
return $myArr;
}
$myArr = someFunction($myArr);
Это позволит вам не полагаться на Globals.
$myArr = array();
function someFuntion(array $myArr) {
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
return $myArr;
}
$myArr = someFunction($myArr);
То, что, вероятно, не так Хороший способ достижения цели - использование глобальных переменных.
Вы можете добиться этого, добавив global $ myArr;
в начало вашей функции.
Однако обратите внимание, что использование глобальных переменных в большинстве случаев является плохой идеей, и ее, вероятно, можно избежать.
Гораздо лучше было бы передать массив в качестве аргумента функции:
function someFuntion($arr){
$myVal = //some processing here to determine value of $myVal
$arr[] = $myVal;
return $arr;
}
$myArr = someFunction($myArr);