1

这是我的数组

Array ( [0] => $30.00 [1] => $200.00 [2] => $138.00 [3] => $100.00 [4] => $30.00 
[5]=>$30.00 [6] => $30.00 )

试图从此数组中获取最大值和最小值

echo $maxprice = max($list);
echo $minprice = min($list);

我得到最高 30.00 美元和最低 100.00 美元

我猜这是因为值是货币字符串。

有人可以告诉我如何获得这个数组的真正最大值和最小值吗?这真的是因为钱串吗?

提前致谢

注意 这个数组是从一个多维数组中剥离出来的。如果是普通数组,那就很简单了

4

3 回答 3

2

删除“$”符号以确保 php 将值视为数字

于 2012-09-04T16:57:49.290 回答
1

您需要在数组中使用十进制值(不带“$”)。美元符号仅应在输出显示时应用。

要将字符串转换为浮点数,您可以只array_walk()使用数组。

如果在 PHP 5.3 或更高版本上,我喜欢使用这样的闭包

array_walk($array, function (&$value, $key) {
   $value = (float)ltrim($value, '$');
});

如果在旧版本的 PHP 中,您需要定义一个单独的函数并像这样在 array_walk 中调用该函数

array_walk($array, 'strip_dollar_signs');

function strip_dollar_signs (&$value, $key) {
    $value = (float)ltrim($value, '$');
}

然后像往常一样对数组进行排序

sort($array, SORT_NUMERIC);
于 2012-09-04T16:58:11.707 回答
1

考虑只存储数值,除非您使用一种以上的货币。此代码应该为您提供最小值和最大值

$copy = $list;
foreach($copy as $key=>$value)$copy[$key] = str_replace('$', '', $value);

echo $maxprice = max($copy);
echo $minprice = min($copy);
于 2012-09-04T17:20:13.077 回答