在foreach中的php数组排序

时间:2014-04-08 15:43:39

标签: php arrays array-multisort

我正在尝试订购由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 ) 

关于我哪里出错的任何想法?

2 个答案:

答案 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
 )