我有一个2个阵列
$check_string = array("www.salmat.", "www.webcentral.", "abpages.");
和
$files = array("http_www.salmat.com.au_.png", "http_www.webcentral.com.au_.png");
现在我想检查数组$check_string matches
中每个元素的值是否包含数组$files
的每个元素的字符串的至少一部分,如果它不匹配,那么我将回显相应的值$ check_string。
所以我正在使用array_filter
函数
foreach ($check_string as $final_check)
{
function my_search($haystack)
{
global $final_check;
$needle = $final_check;
return(strpos($haystack, $needle));
}
$matches[] = array_filter($files, 'my_search');
if(empty($matches))
{
echo $final_check;
echo "</br>";
}
}
但是使用此代码我收到错误
Fatal error: Cannot redeclare my_search() (previously declared in same file)
任何人都可以建议任何解决方案
答案 0 :(得分:3)
function my_search($haystack)
{
global $final_check;
$needle = $final_check;
return(strpos($haystack, $needle));
}
该功能需要在 循环中定义。你可以在循环中一次又一次地调用它。目前,您正试图在循环的每次迭代中重新声明它。
不会建议对代码进行进一步的修复,因为它的逻辑不是很好。你可以试试这样的东西
$check_string = array("www.salmat.", "www.webcentral.", "abpages.");
$files = array("http_www.salmat.com.au_.png", "http_www.webcentral.com.au_.png");
foreach($check_string as $check)
{
$found=FALSE;
foreach($files as $file)
{
if(stristr($file,$check)!==FALSE)
$found=TRUE;
}
if(!$found)
echo $check,"\n";
}
<强> Fiddle 强>
当然,您可以改进它并使用更少的代码,但这会为您提供方向。