[英]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.