2015-01-21 2 views
0

У меня есть многомерный массив, что выглядеть как в этом примере:многомерный массив сортировки по определенным 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'; 

Это должны быть отсортированы и перечислены следующим образом:

  • ID 147:

    • автомобиль | дорога
    • грузовик | Whell
  • ID 155:

    • кот | еда
  • ID 156:

    • ребенка | соску
    • мама | рубашки

Я действительно стопка на этом. Благодаря!

+0

Вы можете поделиться тем, что вы пробовали? Вам не хватает некоторых закрывающих котировок в некоторых идентификаторах вашего массива. –

+0

О, моя ошибка при написании - исправлена. Я хочу отображать контент, например, на примере. Чтобы использовать список идентификаторов и на следующем уровне все содержимое этого идентификатора. –

+0

Некоторые идеи по изменению отображения массива и сортировке? –

ответ

1

Основной implemntation ... Ther лучше anwser, конечно,)

<?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>'; 
+0

ОТЛИЧНО !!! ОТЛИЧНАЯ РАБОТА!!! Это то, что мне нужно. Очень интересный подход. Спасибо тебе, друг! –

+0

Спасибо большое ... Я думаю, что есть лучший метод ... Но это работа;) – Imaginaerum

0

Я рекомендую использовать 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); 
Смежные вопросы