我试图从以下数组中删除所有负整数:
$array = array([-122,121,-124,124,-121,122,-122,124,-121,124,-122,125,-121,121,-123,122,-124,120]);
我已尝试过以下操作,但由于我并不了解array_filter
的工作方式,所以我没有工作:
function positive($var) {
if ($var >= 0) {
return $var;
}
}
print_r(array_filter($array, positive($var)));
我如何将每个值发送到positive
函数?或者有更好的方法吗?可能array_walk
或array_map
?
答案 0 :(得分:2)
array array_filter(array $ array [,callable $ callback [,int $ flag = 0]])
迭代数组中的每个值,并将它们传递给回调 功能。如果回调函数返回true,则返回当前值 from array返回到结果数组中。数组键是 保留。
使用测试正值的回调:
$array = [-122,121,-124,124,-121,122,-122,124,-121,124,-122,125,-121,121,-123,122,-124,120];
$positive_integers = array_filter($array, function($value) {
return $value > 0;
});
答案 1 :(得分:2)
使用此代码:
<?php
$array = array([-122,121,-124,124,-121,122,-122,124,-121,124,-122,125,-121,121,-123,122,-124,120]);
function positive($var)
{
if ($var >= 0)
{
return true;
}
}
print_r(array_filter($array[0], 'positive'));
您必须将$array[0]
作为参数传递给修改数组。您已在第一个元素array([-122,...,-124,120]);
中声明了包含数组的数组,因此要过滤数组,您需要传递$array[0]
。
输出是:
Array ( [1] => 121 [3] => 124 [5] => 122 [7] => 124 [9] => 124 [11] => 125 [13] => 121 [15] => 122 [17] => 120 )