Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组中拒绝某些元素的最佳方法_Php - Fatal编程技术网

Php 从数组中拒绝某些元素的最佳方法

Php 从数组中拒绝某些元素的最佳方法,php,Php,我有一个数组: $array = array( 'aaaDSgsdfg' => 3, 'aaaRewrwer' => 4, 'bbbBsdfs' => 1, 'aaaGgfdg' => 4, 'bbbTrtert' => 5 ); 拒绝索引以“bbb”开头的元素的最佳方法是什么 我可以: $new = array(); foreach ($array as $index => $element) { if (substr(

我有一个数组:

$array = array(
   'aaaDSgsdfg' => 3,
   'aaaRewrwer' => 4,
   'bbbBsdfs' => 1,
   'aaaGgfdg' => 4,
   'bbbTrtert' => 5
);
拒绝索引以“bbb”开头的元素的最佳方法是什么

我可以:

$new = array();
foreach ($array as $index => $element) {
   if (substr($index, 0, 2) == 'aaa') {
       $new[$index] = $element;
   }
}

但也许这是更好的功能?可能是数组映射?

您正在寻找的是数组过滤器:

$array = array_filter($array, function($key) {
   return substr($index, 0, 2) === 'aaa';
}, ARRAY_FILTER_USE_KEY);

如果您使用的是PHP 5.6+,则可以使用来实现这一点:

$array = array_filter(
  $array,
  function ($e) { return strpos($e, 'bbb') !== 0; },
  ARRAY_FILTER_USE_KEY
);
请参见,您可以使用:


请思考此字符串的长度:
substr($index,0,2)
您可能希望将长度更改为3。
$array = array_filter($array, function($index) {
    return substr($index, 0, 2) === 'aaa'
})