• 締切済み

配列の中に一部の文字があるかどか確認したい。

<? header("Content-Type: text/html; charset=EUC"); $sample = array('test1' => "aaa 000 222 333" ,'test2' => "b 555 888 999",'test3' => "c 777 111 10"); if(in_array("222",$sample)){ echo "●"; } if(in_array("aaa 000 222 333",$sample)){ echo "○"; } ?> というようにPHPを記述すると「○」はでるのですが、 「●」がでません。 eregのように配列の中に一部の文字があるかどうかを確認する場合はどうしたらよいのでしょうか。

みんなの回答

noname#87667
noname#87667
回答No.2

動作確認していませんが、in_array関数ではなく、array_search関数を使ってみてはいかがでしょうか。

hukazuo
質問者

お礼

ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

マッチするかどうかみたいなら、配列を適当なセパレータで implodeしてチェックしてみては? <? $sample = array('test1' => "aaa 000 222 333" ,'test2' => "b 555 888 999",'test3' => "c 777 111 10"); $word="222"; $pattern="/".preg_quote($word,"/")."/"; if(preg_match($pattern,implode(chr(0),$sample))){ echo "ok"; } ?>

hukazuo
質問者

補足

ありがとうございます。 出来ました。 ついでで申し訳ないのですが、、、、 $sample = array('test1' => "aaa 000 222 333" ,'test2' => "b 555 888 999",'test3' => "c 777 000 10"); で「000」を含むものだけ吐き出したい場合はどのようにすればよいのでしょうか?? つまりこの場合だと 「aaa 000 222 333」と 「c 777 000 10」を表示させたいのですが、、、、。

関連するQ&A