Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用数组_过滤器和foreach,错误_Php_Array Filter - Fatal编程技术网

Php 使用数组_过滤器和foreach,错误

Php 使用数组_过滤器和foreach,错误,php,array-filter,Php,Array Filter,我有两个数组作为 $check_string = array("www.salmat.", "www.webcentral.", "abpages."); 及 现在我想检查数组$check\u string中每个元素的值是否与数组$files中每个元素的字符串的至少一部分匹配,如果不匹配,我将回显相应的值$check\u string 因此,我正在使用array\u filter函数 foreach ($check_string as $final_check) { functio

我有两个数组作为

 $check_string = array("www.salmat.", "www.webcentral.", "abpages.");

现在我想检查数组
$check\u string中每个元素的值是否与数组
$files
中每个元素的字符串的至少一部分匹配,如果不匹配,我将回显相应的值$check\u string

因此,我正在使用
array\u 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>";
    }
}
有人能提出解决办法吗

我担任裁判,但无法通过解决方案 谢谢

该函数需要在循环外部定义。你可以在循环中一次又一次地调用它。目前,您正在尝试在循环的每个迭代中重新声明它

不打算建议对代码进行进一步的修复,因为它的逻辑不是很好。你可以试试这样的


当然,您可以改进它并使用更少的代码,但这给了您一个方向。

如何通过
$final\u check
值?
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)
 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";
}