Доступ к multidimensional array ArrayHelper-а

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Доступ к multidimensional array ArrayHelper-а

Сообщение phpstarter »

В случае когда из таблички беру две колонки пользуюсь даным кодом.

Код: Выделить всё

$model= ArrayHelper::map(Model::find()->where(['paramID'=>$paramID])->all(),'param1','param2');
        foreach ($model as $value=>$name)
        {
            echo 'param1='.$value.'_param2='.$name.'<br>';
        } 
И получаю строчки param1,param2.
Но что делать если из таблички мне нужно забрать 3 колонки как в коде ниже ?

Код: Выделить всё

$model= ArrayHelper::map(Model::find()->where(['paramID'=>$paramID])->all(),'param1','param2','param3'); 
Каким образом мне их всех распечатать ?
Аватара пользователя
witzawitz
Сообщения: 23
Зарегистрирован: 2013.10.24, 03:08

Re: Доступ к multidimensional array ArrayHelper-а

Сообщение witzawitz »

ArrayHelper::map
Два foreach-а.

Код: Выделить всё

foreach ($model as $class=>$array)
{
        foreach ($array as $value=>$name)
        {
                echo $class.'_param1='.$value.'_param2='.$name.'<br>';
        } 
}
padlyuck
Сообщения: 302
Зарегистрирован: 2015.02.03, 09:50

Re: Доступ к multidimensional array ArrayHelper-а

Сообщение padlyuck »

witzawitz писал(а):ArrayHelper::map
Два foreach-а.

Код: Выделить всё

foreach ($model as $class=>$array)
{
        foreach ($array as $value=>$name)
        {
                echo $class.'_param1='.$value.'_param2='.$name.'<br>';
        } 
}
 
А не проще ли

Код: Выделить всё

$models= ArrayHelper::index(Model::find()->where(['paramID'=>$paramID])->all(),'param1');
foreach ($models as $param1=>$model)
{
    echo 'param1='.$param1.'_param2='.$model->param2.'param3='.$model->param3.'<br>';
} 
phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Доступ к multidimensional array ArrayHelper-а

Сообщение phpstarter »

А не проще ли

Код: Выделить всё

$models= ArrayHelper::index(Model::find()->where(['paramID'=>$paramID])->all(),'param1');
foreach ($models as $param1=>$model)
{
    echo 'param1='.$param1.'_param2='.$model->param2.'param3='.$model->param3.'<br>';
}
Только один param1 не дает запрашивать как у Вас, нужно минимум 2 параметра запрашивать.
В моем случае я запрашиваю три.
$models= ArrayHelper::index(Model::find()->where(['paramID'=>$paramID])->all(),'param1','param2','param3');
Что касается варианта $model->param2 - получаю Trying to get property of non-object
phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Доступ к multidimensional array ArrayHelper-а

Сообщение phpstarter »

witzawitz писал(а):ArrayHelper::map
Два foreach-а.

Код: Выделить всё

foreach ($model as $class=>$array)
{
        foreach ($array as $value=>$name)
        {
                echo $class.'_param1='.$value.'_param2='.$name.'<br>';
        } 
}
Ваш вариант сработал, болшое спасибо.
Что примечательно:
$class выводит param3, $value - param1, а $name - param2 :) Но главное что все работает :)
ch3sh1r3
Сообщения: 1
Зарегистрирован: 2017.07.22, 00:29

Re: Доступ к multidimensional array ArrayHelper-а

Сообщение ch3sh1r3 »

phpstarter писал(а): 2015.04.17, 08:42
witzawitz писал(а):ArrayHelper::map
Два foreach-а.

Код: Выделить всё

foreach ($model as $class=>$array)
{
        foreach ($array as $value=>$name)
        {
                echo $class.'_param1='.$value.'_param2='.$name.'<br>';
        } 
}
Ваш вариант сработал, болшое спасибо.
Что примечательно:
$class выводит param3, $value - param1, а $name - param2 :) Но главное что все работает :)
просто стыд
Ответить