【发布时间】:2022-06-10 23:50:56
【问题描述】:
我有这样的价格数组
$arr = [200,201,203,205,207,300,209,212,0,211,0,0,301,213,214];
上面是 price 的列表,其中很少有 0、300、301 等奇数
我正在尝试通过以下代码删除那些奇数
$fresharray = [];
foreach($arr as $lol)
{
$diff = $lol-$arr[$i-1];
if($diff <-50 || $diff > 50)
{
}
else
{
$fresharray[] = $lol;
}
$i++;
}
我基本上是将当前数字与以前的数字进行比较,如果差异超过 50,我会将其排除在我的fresharray 中,但我的问题是当有两个 0 时,例如 0,0 或 300,301 .. 这里的差异是 0 和 - 1 并将其添加到我的新数组中。如何从价格数组中删除这个奇数。请注意我的数组大小通常超过 1000。解决方案可以是 php 或 javascript。谢谢。
请注意价格可以从 200 开始,也可以在 400 结束.. 但我只是想检查一下当前的数字是否不均匀。
【问题讨论】:
-
"0、300、301等奇数" 0和300是偶数
-
这个问题很困惑......在发现你搞乱了奇数和偶数的含义之前,我建议如何检查偶数/奇数......加上 301-300 它是1 而不是零。加上你说的和你的代码不一致。
-
"它被添加到我的新数组中" 你是说 300 和 301 被添加到
$fresharray中吗?无法重现。print_r($fresharray);为你输出了什么? -
您的意思是“异常值”而不是奇数吗? (与预期范围不同的统计显着值,请参阅en.wikipedia.org/wiki/Outlier)
-
不要与
$arr中的前一个元素比较,而是与$fresharr中最新添加的元素进行比较
标签: javascript php