PHP 以字符串为索引的数组数组
PHP array of array with string as index
我不是 PHP/MySql 方面的专家,所以我关于如何处理多语言网站并使 PHP 代码可读的第一个想法如下:
1) 创建一个带有 "word, en, it, de, fr" 字段的 table,每个字段对应我要翻译的每个字符串。例如:
WORD EN IT DE FR
title HomePage Pagina No Idea
thanks Thank You Grazie Danke Merci
2) 将 table 存储在字符串数组中,以便我可以通过这种方式访问它:
print $word["thanks"]["it"];
哪个恕我直言会使 PHP 代码非常易读(性能并不重要)。
所以,我写了这段代码来从数据库中读取数据,如果翻译为空,我用 "the word in XX is missing" 填充数组(为了避免粘贴所有相同的代码,我只是给你看一个案例):
$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 变量时,它总是空的。从数据库中读取的中间变量看起来没问题。
我做错了什么?谢谢。
测试一下。
<?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 不允许我修改单个字符 ;)
我不是 PHP/MySql 方面的专家,所以我关于如何处理多语言网站并使 PHP 代码可读的第一个想法如下:
1) 创建一个带有 "word, en, it, de, fr" 字段的 table,每个字段对应我要翻译的每个字符串。例如:
WORD EN IT DE FR
title HomePage Pagina No Idea
thanks Thank You Grazie Danke Merci
2) 将 table 存储在字符串数组中,以便我可以通过这种方式访问它:
print $word["thanks"]["it"];
哪个恕我直言会使 PHP 代码非常易读(性能并不重要)。
所以,我写了这段代码来从数据库中读取数据,如果翻译为空,我用 "the word in XX is missing" 填充数组(为了避免粘贴所有相同的代码,我只是给你看一个案例):
$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 变量时,它总是空的。从数据库中读取的中间变量看起来没问题。
我做错了什么?谢谢。
测试一下。
<?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 不允许我修改单个字符 ;)