Как извлечь пары ключ => из этого массива - PullRequest
0 голосов
/ 23 августа 2011

У меня есть этот массив

[InstrumentCategory] => Array
                (
                    [0] => Array
                        (
                            [id] => 4
                            [title] => Training
                            [InstrumentsCategory] => Array
                                (
                                    [id] => 56
                                    [instrument_id] => 28
                                    [category_id] => 4
                                )

                        )

                    [1] => Array
                        (
                            [id] => 8
                            [title] => Working time flexibility
                            [InstrumentsCategory] => Array
                                (
                                    [id] => 57
                                    [instrument_id] => 28
                                    [category_id] => 8
                                )

                        )

                    [2] => Array
                        (
                            [id] => 16
                            [title] => Income support for workers
                            [InstrumentsCategory] => Array
                                (
                                    [id] => 55
                                    [instrument_id] => 28
                                    [category_id] => 16
                                )

                        )

                )

Есть ли другой способ извлечения пар значений id => (обратите внимание, что id в этом случае является ключом в подмассивах), кроме цикла for?

Заранее спасибо

1 Ответ

2 голосов
/ 23 августа 2011

Если вы используете PHP 5.3, вы можете использовать следующий код ( array_reduce ):

$r = array_reduce($input_array,
                  function ($res, $cur) {
                      return $res + array($cur['id'] => $cur);
                  }, array());

Впоследствии $r содержит пары id => value.

Редактировать: С версией PHP <5.3 вы можете сделать следующее: </p>

function array_reduce_cb_id ($res, $cur) {
    return $res + array($cur['id'] => $cur);
}

$r = array_reduce($input_array, 'array_reduce_cb_id', array());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...