在php数组中按条件替换所有项目

时间:2018-01-11 10:24:34

标签: php arrays numbers

我有一个像以下的php数组:

$arr = [-1, 15, 6, 44, 9292, -2, -776, -6];

实际上任何具有负值的数组。

现在我想将所有负值更改为另一个值,让我们说0。 结果我想得到这个:

$res = [0, 15, 6, 44, 9292, 0, 0, 0];

我怎么能做到这一点?

感谢。

6 个答案:

答案 0 :(得分:1)

您可以查看此库

https://github.com/apollonin/numphp

并使用命令

$arr[$arr->lt(0)] = 0;

答案 1 :(得分:0)

您可以使用array_walk函数来解析数组值:

<?php

$arr = [-1, 15, 6, 44, 9292, -2, -776, -6];
$newArr = [];
array_walk($arr, function ($item, $key) use (&$newArr) {
    $newArr[$key] = $item >= 0 ? $item : 0;
});

print_r($newArr);

答案 2 :(得分:0)

for($i = 0; $i < count($arr); $i++){
    if ($arr[$i] < 0)
       $arr[$i] = 0;
}

答案 3 :(得分:0)

您可以使用array_map

$arr = [-1, 15, 6, 44, 9292, -2, -776, -6];

function neg($a){

    return ($a > 0 ) ? $a : 0;

}

print_r(array_map("neg",$arr));

答案 4 :(得分:0)

您可以使用array_walk功能:

$arr = [-1, 15, 6, 44, 9292, -2, -776, -6];
array_walk($arr, function(&$v, $k) {
    $v = ($v <0) ? 0 : $v;
});

答案 5 :(得分:0)

Array_walk很棒但是foreach更快更容易理解

$arr = [-1, 15, 6, 44, 9292, -2, -776, -6];

foreach($arr as $key => $value){
    echo $value < 0 ? 0 : $value;
}