2012-07-19 173 views
0

我有导致像这样的数组:A = laranja B =香蕉C =马卡d =笠帽重新排列(重新排序,排序)阵列,你所希望的方式PHP

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

我试过sort,multisort,但没有成功。

有没有一些建议?

我粘贴一些代码 here,看看它有助于

+0

正是你尝试什么? 'array_multisort'似乎做你想要的。确保您正确阅读文档并了解其工作原理。 – 2012-07-19 11:21:22

+1

你的代码只是打印出数组。从问题或代码中不清楚你想要达到的目标。 – Gareth 2012-07-19 11:22:16

+0

我知道这不是一个聪明的问题,但我试图重新编码,但它不是通过ASC或DESC,它也不是随机的。我想按照我想要的方式排列。数据来自数据库。我不知道我是否可以在sprintf select中做到这一点,但我仍然无法找到如何做到这一点。 – JGSilva 2012-07-19 11:30:21

回答

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çã 
) 
+0

你可以看看[这里](http://codepad.viper-7.com/xNaDxd)?只是试图在我的情况下使用这个,但不明白哪里是不正确的东西... – JGSilva 2012-07-19 11:39:22

+0

@JGSilva忽略我的坏语言设置,但这应该告诉你发生了什么:) – Fluffeh 2012-07-19 11:46:01

+0

就是这样!我现在知道了。非常感谢! – JGSilva 2012-07-19 11:49:02

0

你可能需要添加一个名为像sort_order 其中有一个数字重量阵列中的另一个入口,和排序通过。

像:

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