2013-04-02 2 views
0

У меня есть один многомерный массив, как показано ниже (PHP):Как скопировать один массив из многомерного массива?

Array 
(
    [144320] => Array 
     (
      [3568728] => Array 
       (
        [30832] => 30832 
       ) 

      [3568884] => Array 
       (
        [30827] => 30827 
        [30828] => 30828 
        [30830] => 30830 
        [30831] => 30831 
        [30832] => 30832 
        [30837] => 30837 
        [30838] => 30838 
        [30839] => 30839 
        [30826] => 30826 
        [30808] => 30808 
        [30806] => 30806 
        [30807] => 30807 
        [30698] => 30698 
        [30601] => 30601 
        [30697] => 30697 
       ) 

     ) 

    [144330] => Array 
     (
      [3568731] => Array 
       (
        [30827] => 30827 
        [30839] => 30839 
        [30838] => 30838 
        [30837] => 30837 
        [30832] => 30832 
        [30831] => 30831 
        [30828] => 30828 
        [30830] => 30830 
        [30826] => 30826 
        [30806] => 30806 
        [30808] => 30808 
        [30807] => 30807 
        [30698] => 30698 
        [30697] => 30697 
        [30601] => 30601 
       ) 

     ) 

    [144218] => Array 
     (
      [3568753] => Array 
       (
        [30808] => 30808 
       ) 

     ) 

    [144216] => Array 
     (
      [3568732] => Array 
       (
        [30808] => 30808 
       ) 

     ) 

) 

Этот массив заполняется следующим кодом:

$sql = "SELECT * FROM `bf_alert_stack` WHERE `type` = 'immediately' order by created desc"; 

$q = db_query($sql); 

$user_alerts = array(); 

    while ($row = db_fetch_array($q)) 
{ 
    $user_alerts [$row['uid']] [$row['alert_id']] [$row['nid']] = $row['nid']; 
} 

Из вышеприведенного массива user_alerts Я хочу переставить [$ строки [ 'nid']] и для перестановки я хочу захватить массив [$ row ['nid']] и после его захвата в другой массив, я хочу переупорядочить массив $ row ['nid'], я хочу обновить эту строку $ row ['nid'] в исходный массив user_alerts.

Как я могу это сделать? Я не получаю поиск этого на google, поэтому просто разместил его в соответствующем месте.

+6

Пожалуйста, укажите желаемый результат из ваших данных примера – DaveRandom

+0

Опишите, какой результат вы хотите, и как ваш вопрос отличается от: http://stackoverflow.com/questions/2699086/sort-multidimensional-array-by-value- 2? Rq = 1 – Luceos

+0

, поскольку реорганизация $ row ['nid'] связана с u, используя это с помощью array_multisort ($ row ['nid'], SORT_NUMERIC, SORT_DESC); var_dump ($ ar); но я не уверен, что означает u, потому что я хочу обновить этот массив $ row ['nid'] в исходном массиве user_alerts. " –

ответ

1

Лучшее, что вы можете сделать, это получить его заказать в запросе что-то вроде:

SELECT * FROM `bf_alert_stack` WHERE `type` = 'immediately' 
ORDER BY created desc, nid 

Но если у вас нет доступа, или нужен оригинальный вид по другой причине, вам нужно перебирать рекурсивно по массиву и переназначить последний sortered уровня до исходного массива с PHP методом ksort:

http://www.php.net/manual/en/function.ksort.php

foreach($user_alerts as $uid=>$user_alert) { 
    foreach($alert as $alert_id=>$nids) { 
     $user_alerts[$uid][$alert_id] = ksort($nids); 
    } 
} 

Надеется, что это помогает!

Смежные вопросы