簡體   English   中英

如果數組包含另一個數組中的字符串,則刪除

[英]Remove if array contains string from another array

因此,我們的想法是從一個數組中刪除其他數組的編號列表,但僅刪除第一個數組,解決該問題的任何幫助將不勝感激。

$my_array = array("Sandra Loor,593984076233","Adrian,593998016010","Lucas,593999843424");


function myFilter($string) {
    $to_remove = array("593984076233","593998016010");
    foreach($to_remove as $remove)  {
        return strpos($string, $remove) === false;
    }

}

$newArray = array_filter($my_array, 'myFilter');

foreach ($newArray as $val){
    echo $val.'<br>';
}

問題是您的過濾器將始終從循環的第一次迭代return 相反,如果找到條目,它將返回false,並且在循環結束時將返回true(即完全找不到)...

function myFilter($string) {
    $to_remove = array("593984076233","593998016010");
    foreach($to_remove as $remove)  {
        if ( strpos($string, $remove) !== false )
            return false;
    }
    return true;
}

另一種方法是使用preg_grep在數組中搜索要刪除的項目,然后使用array_diff刪除它們。

$my_array = array("Sandra Loor,593984076233","Adrian,593998016010","Lucas,593999843424");
$to_remove = array("593984076233","593998016010");

$to_remove = "/" . implode("|", $to_remove) . "/";
$match = preg_grep($to_remove, $my_array);
$filtered = array_diff($my_array, $match);

var_dump($filtered);
// Lucas,593999843424

https://3v4l.org/PZ4I6


您也可以將其捆扎成一個襯板,如下所示:

$my_array = array("Sandra Loor,593984076233","Adrian,593998016010","Lucas,593999843424");
$to_remove = array("593984076233","593998016010");

$filtered = array_diff($my_array, preg_grep("/" . implode("|", $to_remove) . "/", $my_array));

var_dump($filtered);

暫無
暫無

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

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