11

PHP で search_array 関数を使用して 0 インデックスを検索し、それを true と評価することはできないようです。

たとえば、次のコードを検討してください。

$test=array(100, 101, 102, 103);

if($key=array_search(100,$test)){

     echo $key;

}

else{

     echo "Not found";

} 

針 '100' は干し草の山で見つかり、キーは 0 として返されます。これまでのところは問題ありませんが、検索が成功したかどうかを評価すると、返された値が 0 (false に等しい) であるため失敗します。

PHP のマニュアルでは '!==' の使用が推奨されていますが、そうするとキー (配列インデックス) は返されず、代わりに 1 または 0 が返されます。

if($key=(array_search(103,$test)!== false)){

}

では、配列をうまく検索し、インデックス 0 で一致を見つけて、それを true と評価するにはどうすればよいでしょうか?

4

5 に答える 5

38

これはドキュメントで明示的に言及されています。===またはを使用する必要があります!==

$key = array_search(...);

if ($key !== false) ...

それ以外の場合、ブール値としてテストされた場合$key評価されます。0false

于 2013-04-10T19:13:05.197 に答える
5

2 番目の例のブロックの条件は、!==演算子に実行順序の優先順位を与えますが、反対のことをしたいと考えています。

if (($key = array_search(100,$test)) !== false) {

!==かっこが必要になるよりも優先順位が高くなります。==

于 2013-04-10T19:15:28.880 に答える
1
$key = array_search($what, $array);
if($key !== false and $array[$key] == $what) {
 return true;
}

それはより安全です

于 2013-04-10T19:17:43.530 に答える
0
$test=array(100, 101, 102, 103);

if (($key = array_search(100,$test)) === false) {
    echo "Not found";
} else{
    echo $key;
} 
于 2013-04-11T00:16:26.687 に答える
0
if(($key = array_search(103,$test)) !== false){

}
于 2013-04-10T19:15:18.757 に答える