如何在数组LIKE变量中生成If然后执行某些操作

时间:2015-05-27 11:15:10

标签: php arrays

我有以下列表(示例代码,变量$ code_name): “A125” “B120” “C105”

一个数组($ codes_list),包含很多代码,但还有一些额外的单词: “A125 NameA” “B8800 Ko” “B120名称Bc” “D3030”

在for循环中,我可以检查数组中是否存在上述列表中的任何值($ code_name)。

if (in_array($code_name, $codes_list))
  {
    echo "Do nothing<br/>";
  } else {
    echo "Code is not in the list, create new one in DB: ".$code_name."<br/>";  
  }

我说的问题是$ code_name只包含“A125”。但是在数组列表中添加了一些额外的文本“A125 NameA”。所以结果将不是我想要的结果。

如果代码名称ALREADY EXISTS在列表中(例如A125,B120)则不执行任何操作。如果它不存在(C105),则在DB中创建一个。

但我想要实现的是检查$ codes_list数组中的$ code_name LIKE %%。所以我试图找到一个与mysql类似的函数。

这可能吗?

if (in_array(LIKE%'.$code_name.'%, $codes_list))

感谢您的帮助

4 个答案:

答案 0 :(得分:3)

您可以使用preg_grep。您可以使用精确模式进行搜索。

  $check = preg_grep("/A125/", $codes_list);
  if (!empty($check))
  {
    echo "Do nothing<br/>";
  } else {
    echo "Code is not in the list, create new one in DB: ".$code_name."<br/>";  
  }
如果找到任何匹配项,

preg_grep将返回带有匹配元素的数组,否则将返回一个空数组。您只需检查返回的数组是否为空。

示例

$array = array("abc123 kj", "b45 kl", "f34");

var_dump(preg_grep("/abc123/", $array));

<强>输出

array(1) {
  [0]=>
  string(9) "abc123 kj"
}

preg_grep

答案 1 :(得分:1)

foreach($codes_list as $key => $value) {
if (strpos($value, $code_name) !== false) {
       //Do Nothing
    }
    else{

      //The code doesn't match

   }
}

答案 2 :(得分:1)

另一种解决方案可能是:

if (strpos(implode( '§', $codes_list ),$code_name)===false) {
 echo "Code is not in the list, create new one in DB: ".$code_name."<br/>";  
} else {
 echo "Do nothing<br/>";
}

答案 3 :(得分:0)

我想你正在寻找: -

    <?php
    $code_array = array("A125 NameA");
    $abc = 'A125';

    print_r( preg_grep( "/".$abc."/" , $code_array ) );

     $check = preg_grep( "/".$abc."/" , $code_array );
  if (!empty($check))
  {
    echo "Do nothing<br/>";
  } else {
    echo "Code is not in the list, create new one in DB: ".$code_name."<br/>";  
  }

    ?>

输出: - http://prntscr.com/79xylb

注意: - preg_grep将生成一个包含匹配元素的数组(如果找到任何匹配项),否则为空数组。