配列の値を検索する関数として array_search があるのですが、
$array = array( 'あ', 'い', 'う', 'え', 'お' ); if( array_search( 'え', $array ) ){ echo( 'ある' ); } else { echo( 'ない' ); }
では、「ある」が表示されますが、配列の先頭である「あ」を検索対象とした場合、
$array = array( 'あ', 'い', 'う', 'え', 'お' ); if( array_search( 'あ', $array ) ){ echo( 'ある' ); } else { echo( 'ない' ); }
結果は「ない」になります。array_search の戻り値はインデックスです。つまり「あ」の戻り値は「0」であり、if 文で FALSE になってしまうことが原因です。なので、
$array = array( 'あ', 'い', 'う', 'え', 'お' ); if( array_search( 'あ', $array ) !== FALSE ){ echo( 'ある' ); } else { echo( 'ない' ); }
とするのが意図した通りの結果になります。但し「配列に値があるか否か」だけであれば、in_array を使った方が悩まずに済むかと。
$array = array( 'あ', 'い', 'う', 'え', 'お' ); if( in_array( 'あ', $array ) ){ echo( 'ある' ); } else { echo( 'ない' ); }
基本的なことなのですが、先ほど忘れて悩んだので。(^^;