我正试图建立一个网站,将显示文本的多种语言。我有一张桌子上写着所有语言的“文本”。如果所选语言中不存在文本,则必须显示默认语言。
从text查询SELECT *,其中TextId = 10在
Id TextId LanguageId Text
10 10 1 first name
13 10 2 名前如果我r_print这个结果,我会得到这样的结果
Array ( [0] => Array ( [0] => 10 [Id] => 10 [1] => 10 [TextId] => 10 [2] => 1 [LanguageId] => 1 [3] => first name [Text] => first name )
[1] => Array ( [0] => 13 [Id] => 13 [1] => 10 [TextId] => 10 [2] => 2 [LanguageId] => 2 [3] => 名前 [Text] => 名前 ) )如何检查这个数组中是否存在LanguageId 2?问题是,TextId 2和Id 2也可能存在于这个数组中。
这与in_array()有关吗?
发布于 2013-12-19 10:00:39
下面是一个函数,它可以检查LanguageId是否等于一个特殊值。
function isLanguageIdExists($yourArray , $LanguageId){
$exists=false;
foreach($yourArray as $array){
if(isset($array['LanguageId'])&& $array['LanguageId'] == $LanguageId){
$exists=true;break;
}
}
return $exists;
}
$exist = isLanguageIdExists($yourArray , 2);//return true or false发布于 2013-12-24 10:46:14
在考虑了这一点之后,我想出了一个可能不那么优雅的解决方案。我没有返回一个数组,而是修改了SQL查询,将一行返回给默认语言(英语)和用户选择的语言(日语)。它使用两个左联接。这表明我接受了SQL方面的(一些)培训,但实际上对多维数组并不满意。
查询def_text =默认语言中的文本usr_text =用户选择语言中的文本
$table01 = "text";
$query="SELECT $table01.TextId,
text_def.Text as def_text,
text_usr.Text as usr_text
FROM $table01
LEFT JOIN $table01 as text_def ON $table01.TextId = text_def.TextId AND text_def.LanguageId = $_SESSION[default_language]
LEFT JOIN $table01 as text_usr ON $table01.TextId = text_usr.TextId AND text_usr.LanguageId = $_SESSION[language]
WHERE $table01.TextId=$mess;";返回结果后,可以很容易地使用isset()或空()检查文本是否可用用户选择的语言
https://stackoverflow.com/questions/20678276
复制相似问题