- ベストアンサー
要素から指定値を検索する方法
- 要素から特定の値を検索する方法について質問があります。
- 条件付きの検索を行いたい場合、複数の条件を用意することができます。
- 条件は必ずしも3つである必要はなく、1つや2つでも検索することが可能です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
んーと、こんな感じでしょうか。 これならば3つ以上の条件も与えられるかと思います。 また、for を使っていますが、foreach に変えてもいいかと。 # $str : ターゲットの文字列 # $cond : AND=1, OR=0 # $pos : 位置条件のarray # 結果 : true / false function check( $str, $cond, $pos ) { $checks = 0; $counts = count( $pos ); for( $i = 0 ; $i < $counts ; $i ++ ) { if( substr( $str, $pos[$i], 1 ) == 1 ) { $checks ++; } } # AND if( $cond ) { if( $checks == $counts ) return( true ); } # OR else { if( $checks ) return( true ); } return( false ); }
その他の回答 (2)
- moon_night
- ベストアンサー率32% (598/1831)
$array = split("_",$data); # 配列に入れる。_で分けない場合は空白にする。 $check = array('3','7','11'); # チェックする場所 $oa = 1; # or:0 / and:1 $i=0; # フラグ foreach($check as $c){ if ($array[$c]){ $i++; } } if ($oa) { if (count(check) == $i) { # true } } else { if ($i) { #true } }
お礼
解答ありがとうございます。 配列に文字列を区切っていれるという手も ありますね。substrとどちらが良いか検討して みます。
- yambejp
- ベストアンサー率51% (3827/7415)
あんま正規表現得意じゃないですけど、こんな感じですか? <?PHP $str="0_1_0_1_0_1_0_0_0_0_0_0_0_0_0"; print preg_match("/^.{2}1.{3}1.{3}1/",$str); ?>
お礼
解答ありがとうございます。 常に○番めだと決まっているような場合ならば 提示していただいた方法でも良いかもしれませんね。
お礼
解答ありがとうございます。 文字列にたいして合致することばかり 考えていましたが、設定した条件の数と 合致した数を比較する方法もたしかにありますね。 これだとすぐ実装できそうな気がします。