14

私はこれが本当に単純であることを望んでいます。明らかな何かが欠けています!

特定の文字列に一致する配列内のすべての要素を削除しようとしています。これは基本的な 1D 配列です。

array("Value1", "Value2", "Value3", "Remove", "Remove");

で終わりたい

array("Value1", "Value2", "Value3");

なぜ機能しarray_filter($array, "Remove");ないのですか?

ありがとう。

4

2 に答える 2

21

array_diff1 つの固定文字列の場合は、ここで使用できます。

$array = array_diff($array, array("Remove"));

より複雑なマッチングについては、preg_grep明らかに次を使用します。

$array = preg_grep("/^Remove$/i", $array, PREG_GREP_INVERT);
// matches upper and lowercase for example
于 2012-12-29T02:36:00.703 に答える
5

コールバックを使用する必要があります。

array_filter($array, function($e){
   return stripos("Remove", $e)===false
});

上記のコードを正しく理解するには、このコメント付きのコードを参照してください。

array_filter($array, function($e){
    if(stripos("Remove", $e)===false) // "Remove" is not found
        return true; // true to keep it.
    else
        return false; // false to filter it. 
});
于 2012-12-29T02:34:07.047 に答える