Переформатирование ассоциативных массивов - PullRequest
0 голосов
/ 24 сентября 2011

Чтобы быть более конкретным, я хочу превратить следующий массив в ассоциативный. Исходный массив индексируется как [0], [1], [2],… [n]. Я использовал функцию Set :: Объединить Cakephp, но я не смог воссоздать все три уровня нужного ассоциативного массива.

Array
(
    [0] => Array
        (
            [ACCOUNTS] => Array
                (
                    [description] => A
                )

            [HEADERS] => Array
                (
                    [description] => B                
                )

            [COLUMNS] => Array
                (
                    [description] => C
                    [id] => 8
                )

        )
    [1] => Array
        (
            [ACCOUNTS] => Array
                (
                    [description] => A1
                )

            [HEADERS] => Array
                (
                    [description] => B1                
                )

            [COLUMNS] => Array
                (
                    [description] => C1
                    [id] => 9
                )

        )       
)

Массив, который я хочу получить, является следующим ассоциативным массивом:

Array
(
    [A] => Array
        (
            [B] => Array
                (
                    [C] => 8
                )
        )
    [A1] => Array
        (
            [B1] => Array
                (
                    [C1] => 9
                )
        )       
)

Я не могу воссоздать все (3) уровня массива выше.

1 Ответ

0 голосов
/ 24 сентября 2011

Вы имеете в виду как:

$newarray = array($first['ACCOUNTS']['description'] => array($first['HEADERS']['description']  => array($first['COLUMNS']['description'] => $first['COLUMNS']['id'])));

Итак, если вы запустите следующее, вы получите то, что вы хотите:

$first = array(
 'ACCOUNTS' => array('description' => 'A'),
 'HEADERS' => array('description' => 'B'), 
 'COLUMNS' => array('description' => 'C', 'id' => '8'));

echo "<pre>";
print_r($first);


$newarray = array($first['ACCOUNTS']['description'] =>
            array($first['HEADERS']['description']  =>  
                array($first['COLUMNS']['description'] =>
                    $first['COLUMNS']['id'])));


print_r($newarray);

Затем вы получите:

Array
(
    [ACCOUNTS] => Array
        (
            [description] => A
        )

    [HEADERS] => Array
        (
            [description] => B
        )

    [COLUMNS] => Array
        (
            [description] => C
            [id] => 8
        )

)
Array
(
    [A] => Array
        (
            [B] => Array
                (
                    [C] => 8
                )

        )

)
...