我有以下列表(示例代码,变量$ 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))
感谢您的帮助
答案 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"
}
答案 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将生成一个包含匹配元素的数组(如果找到任何匹配项),否则为空数组。