Как сделать отсортированный многомерный массив на основе определенного ключа в php - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть массив, который я хотел бы создать многомерный массив на основе определенного индекса в нем.

Array
(
    [0] => Array
        (
            [notecata] => Tele Call
            [user_id] => 1
            [note_key] => 4977f48e
            [note_title] => Urgent Call to Soorya
            [note_description] => want to discuss about the work
            [added_on] => 15-11-11
        )

    [1] => Array
        (
            [notecata] => Set PlaceMent Drive
            [user_id] => 1
            [note_key] => b8b25bd8
            [note_title] => Want to collect biodata from Students
            [note_description] => Soorya must do this very well
            [added_on] => 15-11-11
        )

    [2] => Array
        (
            [notecata] => Conference
            [user_id] => 1
            [note_key] => 3cdb4886
            [note_title] => Sunday Meeting
            [note_description] => About new courses
            [added_on] => 08-11-11
        )

)

Я хочу получить следующий вывод

Array
(
    [15-11-11] => Array
        (
        [0] => Array(
            [notecata] => Tele Call
            [user_id] => 1
            [note_key] => 4977f48e
            [note_title] => Urgent Call to Soorya
            [note_description] => want to discuss about the work
            )
        [1] => Array(
            [notecata] => Set PlaceMent Drive
            [user_id] => 1
            [note_key] => b8b25bd8
            [note_title] => Want to collect biodata from Students
            [note_description] => Soorya must do this very well             
            )
        )
    [8-11-11] => Array
        (
        [0] => Array(
            [notecata] => Conference
            [user_id] => 1
            [note_key] => 3cdb4886
            [note_title] => Sunday Meeting
            [note_description] => About new courses
            )
        )
)

Ответы [ 4 ]

2 голосов
/ 15 ноября 2011

используйте эту функцию

function change_array_keys($array, $key) {
    $return = array();

    foreach ($array as $a) {
        $return[$a[$key]][] = $a;
    }

    return $return;
}

$newArray = change_array_keys($array, "added_on");
0 голосов
/ 15 ноября 2011

попробуйте это:

foreach ($input as $k=>$v)
{
    $array_key = $v['added_on'];
    unset($v['added_on']);
    if( array_key_exists($array_key,$output) )
    {
        array_push($output[$array_key],$v);
    }
    else {
        $output[$array_key][] = $v;     
    }   
}

СМОТРИТЕ ДЕМО РАБОТЫ

0 голосов
/ 15 ноября 2011

попробуйте это:

<?php
header('Content-Type: Text/Plain');

$array = array();

$array[] = array('note' => 'asdf', 'added_on' => '15-11-11');
$array[] = array('note' => 'abcd', 'added_on' => '15-11-11');
$array[] = array('note' => 'qwer', 'added_on' => '15-11-11');
$array[] = array('note' => 'zxcv', 'added_on' => '08-11-11');
print_r($array);
$sorted = array();
foreach( $array as $each)
{
    $current_each_date = $each['added_on'];
    unset($each['added_on']);
    $sorted[ $current_each_date ][] = $each;
}

print_r($sorted);

Получил следующий результат:

Array
(
    [0] => Array
        (
            [note] => asdf
            [added_on] => 15-11-11
        )

    [1] => Array
        (
            [note] => abcd
            [added_on] => 15-11-11
        )

    [2] => Array
        (
            [note] => qwer
            [added_on] => 15-11-11
        )

    [3] => Array
        (
            [note] => zxcv
            [added_on] => 08-11-11
        )

)
Array
(
    [15-11-11] => Array
        (
            [0] => Array
                (
                    [note] => asdf
                )

            [1] => Array
                (
                    [note] => abcd
                )

            [2] => Array
                (
                    [note] => qwer
                )

        )

    [08-11-11] => Array
        (
            [0] => Array
                (
                    [note] => zxcv
                )

        )

)
0 голосов
/ 15 ноября 2011

Возможны варианты:

  1. Получить все даты, отсортировать их;

  2. В цикле найдите запись, соответствующую дате, добавьте все контексты в результирующий массив в индексе ';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...