从数组PHP中过滤掉负整数

时间:2018-04-30 13:30:43

标签: php array-filter

我试图从以下数组中删除所有负整数:

$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_walkarray_map

2 个答案:

答案 0 :(得分:2)

PHP Documentation州:

  

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 )