• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:要素(文字列)から指定値を検索)

要素から指定値を検索する方法

このQ&Aのポイント
  • 要素から特定の値を検索する方法について質問があります。
  • 条件付きの検索を行いたい場合、複数の条件を用意することができます。
  • 条件は必ずしも3つである必要はなく、1つや2つでも検索することが可能です。

質問者が選んだベストアンサー

  • ベストアンサー
  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.1

んーと、こんな感じでしょうか。 これならば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 ); }

ub-aries
質問者

お礼

解答ありがとうございます。 文字列にたいして合致することばかり 考えていましたが、設定した条件の数と 合致した数を比較する方法もたしかにありますね。 これだとすぐ実装できそうな気がします。

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

$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 } }

ub-aries
質問者

お礼

解答ありがとうございます。 配列に文字列を区切っていれるという手も ありますね。substrとどちらが良いか検討して みます。

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

あんま正規表現得意じゃないですけど、こんな感じですか? <?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); ?>

ub-aries
質問者

お礼

解答ありがとうございます。 常に○番めだと決まっているような場合ならば 提示していただいた方法でも良いかもしれませんね。

関連するQ&A