簡體   English   中英

如果包含一些字符串,則從數組中刪除元素

[英]Remove element from array if contains some string

我想根據預定義的$banned數組從數組中刪除元素,我玩過 array_diff 但這不是我需要的,array_diff 給了我結果。

$good = array("111","222","333","222 555","2223 555");
$banned = array("111","222");
$result = array_diff($good, $banned);

結果

Array
(
    [2] => 333
    [3] => 222 555
    [4] => 2223 555
)

但預期的結果應該是

Array
(
    [2] => 333
    [4] => 2223 555
)

由於您在$good中的值看起來像值列表,因此您很可能必須將它們拆分以將它們與$banned進行比較。

所以循環$good並將分解的版本與$banned進行比較(在此代碼中使用array_intersect() ),如果沒有匹配的值,則將其添加到結果中......

$good = array("111","222","333","222 555","2223 555");
$banned = array("111","222");
$result = [];
foreach ( $good as $entry ) {
    if ( array_intersect($banned, explode(" ", $entry)) === [] )    {
        $result[] = $entry;
    }
}

array_diff 工作正常,但在你的情況下,你需要這樣的東西:

$good = array("111","222","333","222 555","2223 555");
$banned = array("111","222");

foreach ($good as $el) {
    $ids = explode(' ', $el);
    foreach ($ids as $id) {
        if (in_array($id, $banned)) break;
        $result[] = $el;
        break;
    }
}
``

暫無
暫無

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

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