2016-06-10 162 views
-2

我想使用一個數組作爲函數的參數。我希望這是工作:如何使用數組作爲函數的參數?

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

回答

4

不清楚是什麼你正在嘗試做的。也許你想這樣的:

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

0
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 ** –

0

試試這個:

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

我試過這個,但是得到了一個空白頁面 – Jarla

+0

奇怪......看起來你在代碼中還有其他問題,然後...... – Andreas