2011-01-22 10 views
2

私のプログラムで何が問題か分かりません。PHPでの配列検索の問題

私はそのは私にその要素のインデックスを与えている

$key = array_search("4", $arr);// Working 

を使用して、この配列を探していたとき、私はこの

$arr = array("1", "urgent", "4", "low", "15", "avg"); 

ような配列が生じています。

しかし、私が "1"を検索しているとき、私にインデックスが与えられていません。

$key = array_search("4", $arr); // Not working here - for searching "1" 

何か問題があります。

+0

この2番目の例を修正したい場合があります。また、あなたに与えるものは何ですか?それが「うまくいかない」とあなたはどのように判断していますか? – deceze

+0

可能性のある[array_searchのエラー]の複製(http://stackoverflow.com/questions/3600597/error-with-array-search) – meagar

+2

[ドキュメンテーション](http:// php .net/manual/en/function.array-search.php)は、このケースを明示的にカバーしています。巨大な赤い箱で。 – meagar

答えて

5

http://ideone.com/e1n3rあなたのコードない細かい作業ありがとうございました。キー== 0(キーは「1」が格納されます)を返します。配列のキーの値を返すarray_search

$arr = array("1", "urgent", "4", "low", "15", "avg"); 

$key1 = array_search("1", $arr); 
var_dump($key1 === false); // false (value exists) 
var_dump($key1 !== false); // true (value exists) 

$key21 = array_search("21", $arr); 
var_dump($key21 === false); // true (value does not exist) 
var_dump($key21 !== false); // false (value does not exist) 
0

あなたは ===オペレータ、またはその逆 !==を使用する必要があります0と false間の差異を取得します。

$arr = array("1", "urgent", "4", "low", "15", "avg"); 
    $key = array_search("4", $arr); 
    // give output is 2 which is key value 
    $key = array_search("1", $arr); 
    //give output is 0 which is key value 
0

0はPHPでFALSEに評価されていることを覚えておいてください。

ので、あなたはそれをこのように使用して、条件が技術的に失敗されていないので、それが動作していないと思う場合には..

if($index = array_search("1",$arr)) { 
    //will actually evaluate to false 
} 

、値がFALSEとして評価されます。

0

私はあなたが間違った方法で$keyを使用していると思います。 $key = 0となり、ブール評価を行うとfalseとなります。 if($key >= 0)if(is_int($key))のようなものを使用する必要があります。