首页 > 解决方案 > 在 php 数组中将 NaN、INF 值更改为 0

问题描述

所以我在 PHP 中有一个数组,其中分别有以下值。

$arr = [1,2,0,0,5,6,7,8,9,10,7,5,7,6,4,7,4,6,4,7,1,15,35];

因此,当我在此应用增长率公式时。一些显示 NaN 和 INF 的值。我知道它的发生是因为0我放入了数组中。

所以我需要用 0 或其他东西替换 NaN、INF 值,这样这些值就不会被跳过。

我尝试了很多方法。但它似乎不起作用。

这是我的代码: $growthrate = [];

$arr = [1,2,0,0,5,6,7,8,9,10,7,5,7,6,4,7,4,6,4,7,1,15,35];

for($i=1;$i<count($arr);$i++)
{
 
 $growthrate[] = $arr[$i]/$arr[$i-1];
 
 error_reporting(E_ERROR | E_PARSE);

}

print_r($growthrate);

在这里你可以看到我得到的输出:

Array ( [0] => 2 [1] => 0 [2] => NAN [3] => INF [4] => 1.2 [5] => 1.1666666666667 [6] => 1.1428571428571 [7] => 1.125 [8] => 1.1111111111111 [9] => 0.7 [10] => 0.71428571428571 [11] => 1.4 [12] => 0.85714285714286 [13] => 0.66666666666667 [14] => 1.75 [15] => 0.57142857142857 [16] => 1.5 [17] => 0.66666666666667 [18] => 1.75 [19] => 0.14285714285714 [20] => 15 [21] => 2.3333333333333 )

我该怎么做才能将 NaN 和 INF 值替换为 ) 或任何内容或使其成为例外。

标签: phparraysfor-loop

解决方案


如果我的问题正确,只需检查除数是否不为 0。

<?php

$arr = [1,2,0,0,5,6,7,8,9,10,7,5,7,6,4,7,4,6,4,7,1,15,35];

$growthrate = [];
for($i=1;$i<count($arr);$i++) {
    $growthrate[] = $arr[$i-1] ? $arr[$i] / $arr[$i-1] : -1; // -1 or whatever value you want...
}

print_r($growthrate);

推荐阅读