PHP从数组中提取值并将它们传递给函数

时间:2014-05-17 11:21:59

标签: php

我试图从数组中提取值,并将它们传递给将要使用它们的函数。我在这个例子的函数中使用了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;
}

?>

2 个答案:

答案 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

Demo

但最好完全避免使用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'];
}