如何在PHP中过滤出具有负整数键的数组元素?
如果我有一个数组:
Array (
[-3] => Academic degree
[-4] => Academic discipline
[-5] => African American history
[-6] =>
[1] => Art
)
结果将是:Array ( [1] => Art )
.
我的想法是使用这样的东西:
$arr = array('-1' => 1, '-2' => 2, '3' => 3;'element4' => 4);$filterOutKeys = array('-1', '-2');
$filteredArr = array_diff_key($arr, array_flip($filterOutKeys))
但是当处理更大的数组时,它变得非常不实用。
使用一个简单的foreach?
$filteredArr = array();
foreach($arr as $key => $value)
if($key > 0)
$filteredArr[$key] = $value;
使用array_filter()
是另一种选择:
$outputArray = array_filter($inputArray, function($value) {
return ($value < 0) ? false : true;
});
编辑:在看到评论之后,我必须同意,这不是我们想要的。但是你仍然可以使用翻转数组:
$outputArray = array_flip(array_filter(array_flip($inputArray), function($value) {
return ($value < 0) ? false : true;
}));
我不知道这个解决方案是否比@Dani说的更快。
EDIT2:完整的测试用例:
$inputArray = array(
-3 => 'Academic degree',
-4 => 'Academic discipline',
-5 => 'African American history',
1 => 'Art');
$outputArray = array_flip(array_filter(array_flip($inputArray), function($value) {
// return ($value < 0) ? false : true;
return $value > 0;
}));
var_dump($outputArray);
/* results in:
array(1) {
[1]=>
string(3) "Art"
}
*/