我试图从数组中提取值,并将它们传递给将要使用它们的函数。我在这个例子的函数中使用了echo
。
我使用提取来获取所有值。
事情是,这不会奏效。你知道如何做到这一点吗?
<?php
$my_array = array("a" => "Prince", "b" => "Funky"); // around 10 more
$g = extract($my_array);
foo($g);
function foo($g) {
echo 'My name is '.$a.', and I am '.$b;
}
?>
答案 0 :(得分:1)
PHP中的函数具有不同的范围,因此函数内部不提供变量$a
,$b
等。试图在函数内部使用它们会导致未定义的变量通知(如果你enable error reporting,那就是)。
现在,您将extract()
的返回值(这是解析的变量总数)存储到您的函数中。你想要这些值,所以改变你的功能:
function foo($array) {
extract($array);
echo 'My name is '.$a.', and I am '.$b;
}
请注意,我已在函数内移动extract()
调用。这样,您就不会使用随机变量污染全局范围(这可能会产生不希望的结果,并且会无缘无故地使您的调试变得困难)。
现在您可以调用您的函数,如下所示:
foo($my_array);
输出:
My name is Prince, and I am Funky
但最好完全避免使用extract()
。请参阅:What is so wrong with extract()?
答案 1 :(得分:-2)
您可以像处理任何其他变量一样在函数中传递数组
$my_array = array("a" => "Prince", "b" => "Funky"); // around 10 more
foo($my_array);
function foo($arrayData)
{
echo 'My name is '.$arrayData['a'].', and I am '.$arrayData['b'];
}