Как не включать в массив элемент по условию?

Рейтинг: 0Ответов: 2Опубликовано: 10.12.2014

Доброго всем дня!

Есть такой вопрос: можно ли не включить в массив какой-либо элемент, используя if()/else()?

Пример:

 $array = [
'something'=>false,
'var'=>true,
'innerArrays'=>[
['title'=>1],
['title'=>2],
['title'=>3]
]
];

В данном массиве нужно по условию выводить массив ['title'=>2] или не выводить. Вопрос, как это сделать? Какое условие, совершенно не важно. Например, if($userName=='admin');.

Заранее благодарю за любую помощь.

P.S.На всякий случай поясню: это утрированный пример вывода колонок по условию в gridview в yii2. Так что если найдется решение, то его будут активно применять для отображения, например, разных колонок для разных ролей пользователей. Утрированный пример привел специально, т.к. вопрос скорее языка, нежели фреймворка. Пример из фреймворка (из документации):

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        // A simple column defined by the data contained in $dataProvider.
        // Data from the model's column1 will be used.
        'id',
        'username',
        // More complex one.
        [
            'class' => 'yii\grid\DataColumn', // can be omitted, default
            'value' => function ($data) {
                return $data->name; //$data['name'] for array data, e.g. using SqlDataProvider.
            },
        ],
    ],
]);

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

UPD: если вдруг кому пригодится. Решение для gridview если мы например хотим показывать колонку username и следующую после нее только админу:

if(Yii::$app->user->identity->username!=='admin'){ //Условие можно поставить любое
$badkey = [1,2] //тут перечисляются индексы, которые не хотим показывать.
}
//Массив с колонками выносим в переменную для удобства
$columns = [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            'username',
            [
                'class' => 'yii\grid\DataColumn', 
                'value' => function ($data) {
                    return $data->name; 
                },
            ],
        ];
//Перебираем массив с колонками, как показал товарищ Get и ищем в массиве ненужные //нам индексы. Если нашли - удаляем этот элемент из массива с помощью unset()
foreach($columns as $key=>$value){
        if(in_array($key,$badkey)){
            unset($columns[$key]);
        }
    }

//После этого выводим сам грид с подготовленным массивом колонок.
echo GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => $columns
    ]);

Ответы

Ответов пока нет.