Как заставить работать ArrayHelper::index?

Приветствую.
Есть массив:
$model =
[
['level1' => '1', 'level2' => 'a', 'level3' => 'a1'],
['level1' => '2', 'level2' => 'b', 'level3' => 'b1'],
['level1' => '3', 'level2' => 'c', 'level3' => 'c1']
];
Делаю так, как написано в доке:
ArrayHelper::index($model, 'level3', function ($element) {
return $element[' level1'];
}, 'level2');
Получается print_r:
Array
(
[a1] => Array
(
[level1] => 1
[level2] => a
[level3] => a1
)

[b1] => Array
(
[level1] => 2
[level2] => b
[level3] => b1
)

[c1] => Array
(
[level1] => 3
[level2] => c
[level3] => c1
)

)

Почему не работает иерархия? Что не так в доке www.yiiframework.com/doc-2.0/guide-helper-array.html
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
Возможно вам нужно обновить фреймворк. Метод ArrayHelper::index() недавно был обновлен и у него появился третий параметр, указывающий порядок группировки. Ранее метод принимал только два параметра.

Вот тут этот момент виден подробнее:
https://github.com/yiisoft/yii2/commit/ef8b0a2be0f...

И правильно будет написать вот так, как и в документации:
ArrayHelper::index($model, 'level3', [function ($element) {
return $element['level1'];
}, 'level2']);

(Анонимная функция и 'level2' - массив)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы