2011-05-23 7 views
0

私はfirePHPを持っていますので、変数が何であるかは正確に分かりますが、なぜこのコードが変更されないのかわかりません。PHP mySQLの条件付きin_arrayトラブル

私は4つの潜在的な種類があり、物事は複数のタイプ(すなわち[{"type":"1"},{"type":"2"}])することができます(返された場合は[{"type":"2"}]を生成)MySQLのコール$クエリ から受け取る

今私は、このデータを読み取り、さまざまな実行したいですそれが持っているタイプに基づいた他の関数、つまり:タイプ2のみの場合は関数TWOを、タイプ1ならば2を、関数TWOならば2を呼び出します。すべてのデータを別の配列に移動すると、これが最も簡単だと思いました。

$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); 

これを私はfirePHPに$messageのすべての値ですfalseを言うことができるようにしかし、($結果配列を更新しません....このように、私は想定しています。ここ

は、私が現在持っているコードです。何かが私のif文が間違っているが、何

+1

例えば、print_rを使って$ queryの完全な出力を入れてもいいですか? – Rodolphe

答えて

1

- 私ではない$queryの値について確認が、それはのようなものである場合:?

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

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

これを変数の値として使用する必要があります。

+0

ああ、うわー、それは何か単純なものになるだろうと分かっていた...私はin_array( '2'、$ query [0])を試していたが、それはエラーを出した。 – mazlix

+0

@mazlix 2は 'array(0 => '{" type ":" 2 "}')に保持されている値の一部分でしかないので、違うのです。' 'もし配列が見えたらこの 'array(0 => 2)'のように – martynthewolf

+0

@mazlixあなたの値はPHPの配列ではなく、文字列です。 javascriptのオブジェクト表記ですが、phpは文字列のみを表示します。 – jeroen

0

$ queryで返される結果は配列の配列なので、in_arrayはサブレベルではなくトップレベルでしか検索しないためですか?再帰的に$ queryを検索するのが望ましいようです。