按照你想要的方式重新排列(重新排序,排序)数组

时间:2012-07-19 11:19:22

标签: php

我有一个数组,结果如下:a = laranja b = banana c =maçãd= limao

现在我想重新排序,但是没有合乎逻辑的东西,比如,d,c,b,a。 我想按照我想要的方式重新排序。可以是a,d,c,b或c,a,b,d。

我尝试了排序,多重排序,但没有成功。

有一些建议吗?

我粘贴了一些代码 here ,看看它是否有帮助

2 个答案:

答案 0 :(得分:2)

请参阅sort()

$yourArray;
sort($yourArray);
print_r($yourArray);
// Now alphabetical

此外,如果您编写一个函数来根据需要对值进行排序,请使用usort()

<?php
function cmp($a, $b)
{
    if ($a == $b) {
    return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

0: 1
1: 2
2: 3
3: 5
4: 6

编辑:

你的foreach陈述是kaput。

<?php
    function cmp($a, $b)
    {
        if ($a == $b) 
        {
            return 0;
        }
        return ($a < $b) ? -1 : 1;
    }

    $a = array("d"=>"limao", "a"=>"laranja", "b" =>"banana", "c"=>"maçã");
    print_R($a);
    usort($a, "cmp");
    print_R($a);
?>

输出:

Array
(
    [d] => limao
    [a] => laranja
    [b] => banana
    [c] => maçã
)
Array
(
    [0] => banana
    [1] => laranja
    [2] => limao
    [3] => maçã
)

答案 1 :(得分:0)

您可能需要在数组中添加另一个名为sort_order的条目 它具有数字权重,并按此排序。

像:

Array (
  Array ( 'name' => 'test', 'sort' => 1 ),
  Array ( 'name' => 'test test', 'sort' => 2 )
);