Php 如何使用数组作为函数的参数?

Php 如何使用数组作为函数的参数?,php,arrays,function,foreach,Php,Arrays,Function,Foreach,我想使用数组作为函数的参数。我希望这是可行的: function data($array){ $pdo = Database::connect(); $sql = 'SELECT * FROM data ORDER BY id DESC'; foreach ($pdo->query($sql) as $row) { $elements = implode($array); echo "Start> ".$elements. "

我想使用数组作为函数的参数。我希望这是可行的:

function data($array){
    $pdo = Database::connect(); 
    $sql = 'SELECT  *  FROM data ORDER BY id DESC';
    foreach ($pdo->query($sql) as $row) {
       $elements = implode($array);
       echo "Start> ".$elements. "<End";
    }
 }
 $array = array("$row['id']", "$row['name']", "$row['age']", "$someothervariable");      
 data($array);
工作示例:

尝试以下操作:

function data(&$array){ // note the & sign.

不清楚你想做什么。也许你想要这个:

function data($fields)
{
    $pdo = Database::connect(); 
    $sql = 'SELECT ' . implode(', ', $fields) . ' FROM data ORDER BY id DESC';
    foreach ($pdo->query($sql) as $row)
    {
        echo implode(', ', $row);
    }
}
$fields = array('id', 'name', 'age');      
data($fields);

只需执行
var\u转储($array)在定义它之后,在调用函数之前…@jeroen结果
数组(3){[0]=>string(12)“[1]=>string(14)”“[2]=>string(14)”}
当您执行
内爆($array)
时,是否希望它像
$row['id']
那样计算数组中的表达式?事情不是这样的。它只是按字面意思组合字符串。@Jarla为了安全起见,您能确认您的数据库连接在您的函数中工作吗?可能是使用了
try()catch()
块?我不知道您使用的是哪个php版本,但我希望出现一个解析错误或3个空字符串。哦,实际上,我的问题中缺少大括号,在我的代码中它就在那里,但仍然不起作用我的结果是空的,在您的示例中没有数据库连接,可能存在问题,请尝试数据库连接和查询。如果不是输入错误,那么您的查询SELECT*FROM data BY id DESC应该是SELECT*FROM data ORDER BY id DESC我编辑了我的问题,以证明我的数据库连接工作正常。谢谢,很好的解决方案!但对我来说不幸的是,这不起作用,因为我还需要其他变量。示例:`$array=array(“$row['id']”,“$row['name']”,“$row['age']”,“$someothervariable”)`@Jarla传递完整的变量名以供以后解析是不正常的。PHP支持它,但它不是你每天都能看到的东西。。。我甚至会说,如果你需要的话,你是做错了。此外,任何存在于
data()
之外的变量都将超出范围,反之亦然。好的,是的,我认为你是对的!我将寻找一个不同的解决方案。
function data(&$array){ // note the & sign.
function data($fields)
{
    $pdo = Database::connect(); 
    $sql = 'SELECT ' . implode(', ', $fields) . ' FROM data ORDER BY id DESC';
    foreach ($pdo->query($sql) as $row)
    {
        echo implode(', ', $row);
    }
}
$fields = array('id', 'name', 'age');      
data($fields);