2017-09-13 68 views
0

我如何從數組中刪除一個值什麼不完全匹配的字母。從數組中刪除值什麼是不完全匹配

陣列的代碼示例:

$Array = array(
'Funny', 
'funnY', 
'Games', 
); 

我怎麼可以不設置此數組中什麼是「有趣」

我通過取消設置嘗試所有的值(「搞笑」);但不從數組取出值,被刪除只是如果我有「搞笑」的數組,但「滑稽」或「搞怪」不工作

回答

1

也許有與array_intersect_key什麼的一些複雜的解決方案,它可以在一個做到這一點行,但我認爲這種做法更容易閱讀:

function removeCaseInsensitive($array, $toRemove) { 
    $ret = []; 
    foreach ($array as $v) { 
     if (strtolower($v) != strtolower($toRemove)) 
      $ret[] = $v; 
    } 
    return $ret; 
} 

這將返回一個新的數組,不包含任何$toRemove情況。如果你想保留的按鍵比你可以這樣做:

function removeCaseInsensitive($array, $toRemove) { 
    $keep = []; 
    foreach ($array as $k => $v) { 
     if (strtolower($v) != strtolower($toRemove)) 
      $keep[$k] = true; 
    } 
    return array_intersect_keys($array, $keep); 
} 
+0

工作,感謝您對本! –

0

您可以過濾掉一個鬆散的過濾規則這些值:

$array = array_filter($array, function($value) { 
    return strtolower($value) !== 'funny'; 
});