PHP数组,数组以字符串作为索引

时间:2015-08-02 16:56:52

标签: php arrays key

我不是PHP / MySql的专家,所以我对如何使用多种语言处理网站并使PHP代码可读的第一个想法如下:

1)使用" word,en,it,de,fr"创建一个表格。字段,每个我希望翻译的字符串。例如:

 WORD        EN        IT        DE        FR
 title       HomePage  Pagina              No Idea
 thanks      Thank You Grazie    Danke     Merci

2)将表存储在一个字符串数组数组中,以便我可以这样访问它:

 print $word["thanks"]["it"];

IMHO会使PHP代码非常易读(性能不重要)。

所以,我编写了这段代码来读取数据库中的数据,如果转换为空,我用#34填充数组; XX中的单词缺失" (为了避免粘贴所有相同的代码,我只向您展示一个案例):

 $s = "SELECT word, it, en, de, fr FROM languages";
 $result = $conn->query($s);
 while ($r = $result->fetch_array(MYSQLI_ASSOC)) {
   $word = $r["word"];
   $it = $r["it"];
   // and DE and EN and FR...
   if ($it != "")
     $w["$word"]["$it"] = $it;
   else
     $w["$word"]["$it"] = $word." IT missing";
   // and DE and EN and FR...
 }   

我尝试使用双引号,我尝试删除它们......但每次打印$ w变量时,总是空的。从DB读取的中间变量看起来没问题。

我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:3)

测试一下。

<?php
$s = "SELECT word, it, en, de, fr FROM languages";
$result = $conn->query($s);
$languages = array('it', 'en', 'de', 'fr');
while ($r = $result->fetch_array(MYSQLI_ASSOC)) {
    foreach ($languages as $lang) {
        $word = strval(trim($r["word"]));
        $translated_word = strval(trim($r[$lang]));
        (strlen($translated_word) > 0) ? $w[$word][$lang] = $translated_word : 
                $w[$word][$lang] = $word . " " . strtoupper($lang) . " missing";
    }
}   

ZioBit编辑:虚拟文本,因为SO不允许我修改单个字符;)