按特定 ID 排序的多维数组


Multidimensional array sorting by certain ID

>我有一个多维数组,看起来像这个例子:

$save[0]['id']='147';
$save[0]['record1']='car';
$save[0]['record2']='road';
$save[1]['id']='147';
$save[1]['record1']='truck';
$save[1]['record2']='wheel';
$save[2]['id']='155';
$save[2]['record1']='cat';
$save[2]['record2']='food';
$save[3]['id']='156';
$save[3]['record1']='baby';
$save[3]['record2']='pacifier';
$save[4]['id']='156';
$save[4]['record1']='mom';
$save[4]['record2']='shirt';

它需要像这样排序和列出:

  • 编号 147:

    • 汽车|公路
    • 卡车|地狱
  • ID 155:

    • 猫|食品
  • 编号 156:

    • 婴儿|奶嘴
    • 妈妈|衬衫

我真的对此感到厌烦。谢谢!

一个基本的暗示...当然,这是最好的安;)

<?php
$save[0]['id']=147;
$save[0]['record1']='car';
$save[0]['record2']='road';
$save[1]['id']=147;
$save[1]['record1']='truck';
$save[1]['record2']='wheel';
$save[2]['id']=155;
$save[2]['record1']='cat';
$save[2]['record2']='food';
$save[3]['id']=156;
$save[3]['record1']='baby';
$save[3]['record2']='pacifier';
$save[4]['id']=156;
$save[4]['record1']='mom';
$save[4]['record2']='shirt';

$arr=array();
$i=0;
foreach($save as $k) {
    $i++;
    if(!isset($arr[$k['id']])) {
        $arr[$k['id']]=array();     
    }
    $arr[$k['id']][$i][] = $k['record1'];
    $arr[$k['id']][$i][] = $k['record2'];
}
foreach($arr as $k=>$values) {
    foreach($values as $kk => $v) {
        $arr[$k][$kk] = implode('|', $v);
    }
}
echo "<ul>";
foreach($arr as $id => $values) {
    echo "<li>ID $id</li>";
    if(count($values)) {
        echo "<ul>";
        foreach($values as $value) {
            echo "<li>$value</li>";
        }
        echo "</ul>";
    }
}
echo "</ul>";
echo '<pre>'.print_r($arr,true).'</pre>';

我建议使用array_multisort。演示代码:

$array = array(
    array("id" => 115, "record1" => "cat", "food"),
    array("id" => 215, "record1" => "cat2", "food2"),
    array("id" => 22, "record1" => "cat3", "food3")
);
$sort = array();
foreach($array as $key => $value){
    $sort[$key] = $values["id"];
}
array_multisort($sort, SORT_NUMERIC, $array);
var_dump($array);