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

问题描述:

我想使用一个数组作为函数的参数。我希望这是工作:如何使用数组作为函数的参数?

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); 

但我的结果是:Start> <End


编辑:

像这一切运作良好:

$pdo = Database::connect(); 
    $sql = 'SELECT * FROM data ORDER BY id DESC'; 
    foreach ($pdo->query($sql) as $row) { 
     echo $row['id']; 
     echo $row['name']; 
     echo $row['age']; 
    } 
+0

只是做了'的var_dump($阵列);'就在你定义后,你打电话给你的函数... – jeroen

+0

@jeroen结果之前'阵列(3){[0] =>字符串(12)“”[1] =>字符串(14)“”[2] =>字符串(14)“”}' – Jarla

+0

您是否期望它评估数组中的表达式,比如'$ row [' id']'当你做'implode($ array)'?这不是事情的方式。它只是从字面上结合字符串。 – Barmar

不清楚是什么你正在尝试做的。也许你想这样的:

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); 
+1

你让我失望了。 – Barmar

+0

谢谢,很好的解决方案!但对于我来说,不幸的是不能工作,因为我还需要其他变量。例如:'$ array = array(“$ row ['id']”,“$ row ['name']”,“$ row ['age']”,“$ someothervariable”); ' – Jarla

+0

@Jarla传递完整的变量名称以后解决是不正常的。 PHP支持它,但这不是你每天都看到的东西......我甚至会说,如果你需要这样做,你就错了。此外,data()外部的任何变量都将超出范围,反之亦然。 – Havenard

function data($array){ 
    $pdo = Database::connect(); 
    $sql = 'SELECT * FROM data ORDER BY id DESC'; 
    foreach ($pdo->query($sql) as $row) { 
     $elements = implode($array); 
     echo $elements; 
    } // this is end of foreach 

} // you are missing this braces 

$array = array("$row['id']", "$row['name']", "$row['age']");  
data($array); 

工作示例:http://sandbox.onlinephpfunctions.com/code/20d306c8c7df9d4c446eebd34703a7fd68f76665

+0

哦,实际上,m issing大括号只是在我的问题缺少,在我的代码它是在那里,但仍然不工作 – Jarla

+0

我的结果是空的,在你的例子中没有数据库连接,也许有问题 – Jarla

+0

尝试你的数据库连接和查询。如果它不是拼写错误,那么你的查询** SELECT * FROM data BY id DESC **应该是** SELECT * FROM data ORDER BY id DESC ** –

试试这个:

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

我试过这个,但是得到了一个空白页面 – Jarla

+0

奇怪......看起来你在代码中还有其他问题,然后...... – Andreas