2014-02-22 125 views
0

我有PHP數組這樣如何重組陣列在PHP

[ 
['name'=>'john0', 'order' => '1'], 
['name'=>'john1', 'order' => '2'], 
['name'=>'john2', 'order' => '2'], 
['name'=>'john3', 'order' => '3'], 
['name'=>'john4', 'order' => '3'], 
['name'=>'john5', 'order' => '4'], 
['name'=>'john6'], 
['name'=>'john7', 'order' => '5'], 
] 

我想從ASC

  • 以下

    1. 排序順序。如果順序是不是有那麼元素應該追加到最後
    2. 如果訂單相同,那麼它們應該組合在一起排列在一起

    結果應該是

    ['john0',['john1','john2'],['john3','john4'],'john5','john7','john6'] 
    
  • +2

    你可以用'usort'到數組排序,那麼你就必須寫一個循環來重組一切 - 沒有什麼可以做到的。 – Barmar

    回答

    0

    你可以做如下

    $aResultArray = array(); 
    $aTempWithoutorder = array(); 
    foreach($aArray AS $array) 
    { 
        if(isset($array['order']) 
        $aResultArray[$array['order']][] = $array['name']; 
        else 
        $aTempWithoutorder = $array; 
    } 
    ksort($aResultArray); 
    $aRearrange = array(); 
    foreach($aResultArray AS $iOrder=>$name) 
    { 
        $aRearrange[] = $name; 
    } 
    $aFinalArray = $aRearrange + $aTempWithoutorder; 
    
    $aFinalArray will have order 
    
    +0

    什麼是$ aArray' – user3147180

    +0

    $ aArray將是您在問題中定義的輸入數組。 –