PHP mySQL有条件的in_array问题

时间:2011-05-23 15:10:25

标签: php mysql arrays codeigniter if-statement

我有firePHP所以我确切知道变量是什么,但我无法弄清楚为什么这段代码不会改变它。

我从mySQL调用$ query接收(如果返回则生成[{"type":"2"}]) 我有4种可能的类型,事物可以是多种类型(即[{"type":"1"},{"type":"2"}]

现在我想读取这些数据,并根据它的类型运行各种其他函数,即:如果它只是类型2,则调用函数TWO,如果它是类型1和2,则调用函数ONE和函数TWO。我认为如果我将所有数据移动到另一个数组中,这将是最简单的。

以下是我目前的代码:

$result = array('message'=>false, 'money'=>false, 'glasses'=>false, 'exclamation'=>false);
    if (in_array('1',$query)) {$result['message'] = true;}
    if (in_array('2',$query)) {$result['money'] = true;}
    if (in_array('3',$query)) {$result['glasses']=true;}
    if (in_array('4',$query)) {$result['exclamation']=true;}
    echo json_encode($result);

然而,这不会更新$ result数组(因为我可以在firePHP中告诉$message的所有值都是false。因此我假设我的if语句有问题,但是什么?

2 个答案:

答案 0 :(得分:1)

我不确定$query的值,但是如果它是这样的话:

array [0 => '{"type":"2"}']

你必须使用:

in_array('{"type":"2"}',$query)

因为那是你变量的值。

答案 1 :(得分:0)

是因为$ query中返回的结果是数组数组,因此in_array只搜索顶级而不是子级别?看起来你想要的是递归搜索$ query。