0

私はphpにかなり慣れていないので、ここで知りたいものの名前と用語がわかりません。SEで検索しましたが、質問のタイトルは似ていますが、残念ながら部分的に関連していない完全に異なることを尋ねています。存在するのに見つけられなかった場合は、事前にすみません。

私は文字列$str= 'somevalue';またはを持っています$array = ['s', 'o', 'm' ..];

ここで、2 次元の別の配列があり、そのうちの最初の項目をこのメイン配列に対してチェックし、それらが存在するかどうかに応じて、2 番目の項目を追加します。

$to_match[] = ('match' => 'rnd_letter', 'if_not_add' => 'someval');
$to_match[] = ('match' => 'rnd_letter', 'if_not_add' => 'someval_x');
..

rnd_letter は文字または文字の組み合わせであり、someval は同じです。

'match' の文字が $str に存在するかどうかを確認し、存在しない場合は配列の 'if_not_add' の末尾の文字に追加するにはどうすればよいですか?

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

4

3 に答える 3

2
$to_match = array();
$to_match[] = array('match' => 'hello', 'if_not_add' => 'value 1');
$to_match[] = array('match' => 'abc', 'if_not_add' => 'value 2');
$to_match[] = array('match' => 'w', 'if_not_add' => 'value 3');

$str = 'Hello World!';
$new_array = array();

foreach($to_match as $value) {
  if(!stristr($str, $value['match'])) {
    $new_array[] = $value['if_not_add'];
  }
}

var_dump($new_array); // outputs array(1) { [0]=> string(7) "value 2" } 

これは各配列要素を反復処理し、 の値が にmatch存在するかどうかを確認し、存在し$strない場合は追加し$new_arrayます (それがあなたが探していたものだと思いますか?)

于 2012-05-14T09:43:53.187 に答える
1

弦:

for (int i = 0; i < strlen($to_match['match']); i++) {
    $char = substr($to_match['match'], i, 1);
    if (strpos($str, $char) !== false) {
        //contains the character
    } else {
        //does not contain the character
    }
}

配列:

for(int i = 0; i < strlen($to_match['match']); i++) {
    $char = substr($to_match['match'], i, 1);
    $charFound = false;
    for (int j = 0; j < count($array); j++) {
        if ($char == $array[j]) {
            $charFound = true;
        }
    }

    if ($charFound) {
        //it contains the char
    } else {
        //it doesnt contain the char
    }
}

こんな感じだと思います。あなたがこれについてどう思うか教えてください。

于 2012-05-14T09:36:14.547 に答える
1

次の方法を使用して、文字列が配列に存在するかどうかを確認できます

<?php 
$array = array('mike','sam','david','somevalue');
$str = 'somevalue';
if(in_array($str,$array)){
    //do whatever you want to do
    echo $str;
}

?>
于 2012-05-14T09:43:05.103 に答える