PHP:将数组与字符串(或数组)进行比较并添加到该字符串?

时间:2012-05-14 09:20:57

标签: php arrays multidimensional-array

  

我对php很新,所以我不确定名称和术语   我想在这里找到。我确实搜索了SE,但是   问题的标题是相似的,他们要求完全不同   遗憾的是,甚至没有部分相关的东西。对不起   如果它存在而我无法找到。

我有一个字符串$str= 'somevalue';$array = ['s', 'o', 'm' ..];

现在,我有另一个二维数组,其中第一项我要检查这个主数组,并根据它们是否存在,添加第二项。

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

rnd_letter是一个字母或字母组合,而someval是相同的。

如何检查$ str中是否存在'match'中的字母,如果没有,则添加到数组的'if_not_add'的结束字母?

非常感谢。

3 个答案:

答案 0 :(得分: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(我认为这就是你所看到的为?)

答案 1 :(得分: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
    }
}

我想应该是这样的。让我知道你对此的看法。

答案 2 :(得分:1)

您可以使用以下方式检查数组中是否存在字符串

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

?>