2013-05-28 38 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

非常适合西班牙语或荷兰语或葡萄牙语,不适用 –