如何删除包含某个子字符串的所有PHP数组元素?

时间:2012-05-06 20:55:13

标签: php arrays filtering higher-order-functions

好吧我查了一些功能,我似乎没有找到任何功能,

我想过滤一个数组来去除包含一些字符串的特定数组

以下是一个例子:

$array(1 => 'January', 2 => 'February', 3 => 'March',);
$to_remove = "Jan"; // or jan || jAn, .. no case sensitivity
$strip = somefunction($array, $to_remove);
print_r($strip);

它应该返回

[1] => February
[2] => March

查找数组中所有值的子字符串的函数,如果找到子字符串,则从数组中删除该元素

3 个答案:

答案 0 :(得分:8)

您可以使用array_filterstripos

$array = array(1 => 'January', 'February', 'March');
print_r(array_filter($array, function ($var) { return (stripos($var, 'Jan') === false); }));

答案 1 :(得分:4)

您可以将array_filter()closure(内联函数)一起使用:

array_filter(
  $array,
  function ($element) use ($to_remove) {
    return strpos($element, $to_remove) === false;
  }
);

(PHP版本> = 5.3)

答案 2 :(得分:0)

最简单的方法是使用array_filter。此函数接收要过滤的数组和基于接收到的值执行实际过滤的回调函数:

function filter_func( $v )
{
  return ( ( $var % 2 ) == 0 );
}
$test_array = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
print_r( array_filter( $test_array, "filter_func" ) );

希望有所帮助!