检查数据库查询中是否存在数组值

时间:2013-12-19 09:50:50

标签: php mysql arrays

我正在尝试构建一个以多种语言显示文本的网站。 我有一个包含所有语言的表'text'。如果所选语言中不存在该文本,则必须显示默认语言。

查询SELECT * FROM text WHERE 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()

3 个答案:

答案 0 :(得分:2)

这是一个可以检查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

答案 1 :(得分:0)

您可以通过isset检查密钥并匹配php中的值。

$dataArray =  array(
    0 => array(0 => 10 ,'Id' => 10, 1 => 10, 'TextId' => 10, 2 => 1, 'LanguageId' => 1),1 => array(0 => 10 ,'Id' => 10, 1 => 10, 'TextId' => 10, 2 => 1, 'LanguageId' => 1)

);

foreach($dataArray as $value) {
    if(isset($value['LanguageId']) && $value['LanguageId'] == 2) {
        echo 'language ID 2 is available';
    }
}

Working Demo

答案 2 :(得分:0)

在给出更多想法之后,我想出了一个可能不那么优雅的解决方案。 我没有获取数组,而是修改了SQL Query,使用默认语言(英语)和用户选择的语言(日语)返回一行。 它使用两个左连接。这表明我接受了(一些)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()或empty()查看文本是否以用户选择的语言显示