如何使用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))
但在处理更大的阵列时,它变得非常不切实际。
答案 0 :(得分:5)
使用简单的foreach?
$filteredArr = array();
foreach($arr as $key => $value)
if($key > 0)
$filteredArr[$key] = $value;
答案 1 :(得分:0)
使用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"
}
*/