2012-07-19 171 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) 
);