如何在php中重新组合数组

时间:2014-02-22 09:15:48

标签: php arrays

我有像这样的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'],
]

我想要以下

  1. 按照ASC的顺序排序
  2. 如果订单不存在,则该元素应追加到最后
  3. 如果顺序相同,则应将它们组合在一个数组
  4. 结果应为

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

1 个答案:

答案 0 :(得分: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