2013-05-28 37 views
0

我的代碼是2個部分,我不能讓一個......對於很多原因,我只能編輯第一部分的foreach鍵值

第一部分是:

<?php 

$w = $db->query("SELECT name,code FROM languages"); 
$languages = array(); 
while ($row = $db->fetchAll($w)) { 
    $languages[] = $row['name']; 
} 
?> 

第二部分是:

<?php 

foreach ($languages as $code => $name) { 
    echo 'Language is : ' . $name . ' | Code is : ' . $code; 
} 
?> 

而電流輸出爲:

Language is : English | Code is : 0 
Language is : x  | Code is : 1 
ect... 

正如你可以看到$ name是語言名稱和$ code是一個鍵和關鍵值是0,1,2,3,.. ect

我想要做的是讓關鍵$代碼)=真正的語言代碼來獲得輸出像

Language is : English | Code is : en 

任何想法請嗎?

謝謝。

+0

下面的 「代碼」 列中存儲在數據庫中什麼樣的價值觀? (英文,0),(xxx,1)等。或(英文,en),(xxxx,yy)? –

+0

您可以重新設計或修改語言表嗎?我認爲,你的問題有更多清晰的解決方案,但它需要清潔的模型。 – Rolice

回答

4

只要改變線

$languages[] = $row['name']; 

到這一個:

$languages[$row['code']] = $row['name']; 

使用的陣列沒有索引(例如$array[] =)將只是追加你的值使用數字鍵的端部。

1

真正的語言代碼是否存儲在數據庫中?

如果是這樣一部分人應該

$w = $db->query("SELECT name,code FROM languages"); 
$languages = array(); 
while($row = $db->fetchAll($w)) 
{ 
$languages[$row['code']] = $row['name']; 
} 
1

變化

$languages[] = $row['name']; 

$languages[strtolower(substr($row['name'],0,2))] = $row['name']; 
+0

非常適合西班牙語或荷蘭語或葡萄牙語,不適用 –