【发布时间】:2015-08-02 16:56:51
【问题描述】:
我不是 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"];
恕我直言,这将使 PHP 代码非常易读(性能并不重要)。
所以,我写了这段代码来从数据库中读取数据,如果翻译为空,我用“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 中读取的中间变量看起来没问题。
我做错了什么?谢谢。
【问题讨论】:
-
那么当你打印它的时候呢?在
while循环之后? -
是的。甚至直接打印单个元素(如提供的示例中)也不会做任何事情:(
-
您绝对不需要在
"$word"和"$it"周围加上引号。 -
如果
var_dump($r)- 它显示了什么? -
在
while ($r = $result->fetch_array(MYSQLI_ASSOC)) {之后添加var_dump($r)- 你看到了什么?