Проблема не в переменной, а в том, что вы обращаетесь к переменной, которая находится вне области действия функции.Изнутри функции вы можете получить доступ только к параметрам функции, так называемым суперглобальным и глобальным переменным (с оператором global $global_variable;
).
Просьба прочитать о область действия переменной
Если $ bookPrices - глобальная переменная, вы можете попробовать:
function keyValMyArray($nameofmyarray) {
global ${$nameofmyarray};
foreach(${$nameofmyarray} as $key => $val) {
print "$key: $val";
}
}
Но это не очень хорошая практика, поскольку она будет работать только в особых случаях, когда вы используете глобальные переменные,
Может быть, вы можете просто передать keyValMyArray фактическую переменную, а не ее имя?Это было бы более общим.Таким образом, если вы сможете получить доступ к переменной в том месте, где вы вызываете функцию, она будет работать и для локальных переменных:
function keyValMyArray($myarray) {
foreach($myarray as $key => $val) {
print "$key: $val";
}
}
//then use:
keyValMyArray($bookPrices);
//or
$nameOfArray = 'bookPrices');
keyValMyArray(${$nameOfArray});
С уважением, SWilk