我正在尝试订购由foreach循环生成的数组,这是我的代码:
$lowestvar = array();
foreach ($variations as $variation){
$lowestvar[] = $variation['price_html'];
}
然后我就像这样使用array_multisort:
array_multisort($lowestvar, SORT_ASC);
print_r($lowestvar);
这适用于输出为:
的第一个循环项目Array ( [0] => £10.00 [1] => £15.00 )
但循环中的第二个数组如下所示:
Array ( [0] => £10.00 [1] => £5.00 )
关于我哪里出错的任何想法?
答案 0 :(得分:4)
您正在排序 STRINGS ,这意味着10 < 5
为真。请记住,字符串排序是char-by-char,而不是“整个值”。
答案 1 :(得分:2)
您可以像以下示例中那样使用usort()
function cmp($a1, $b1)
{
$a=str_replace('£','',$a1);
$b=str_replace('£','',$b1);
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array('£10.00','£5.00');
usort($a, "cmp");
print_r($a);
<强>输出强>
Array
(
[0] => £5.00
[1] => £10.00
)