簡體   English   中英

使用array_filter和foreach,錯誤

[英]With array_filter and foreach , error

我有一個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 matches ,如果它不匹配,那么我將回顯各自的值$ 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)

可以任何人建議任何解決方案

我審閱這個這個 ,而是通過解決三江源不能得到

 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";
}

小提琴

當然,你可以改進它並使用更少的代碼,但這會給你一個方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM