Создать массив в foreach, ключ к первому значению в цикле

1

У меня есть фильтры:

$filters = array('rooms-4-5', 'city-london-berlin-paris');

и я хочу создать такой массив:

array(
     'rooms' => array('4', '5'),
     'city'  => array('london', 'berlin', 'paris')
);

Я пытался:

    foreach($filters as $filter):
        $filter = explode('-', $filter);
        $data[$filter[0]] = array();
        array_shift($filter);
        foreach($filter as $value):
            //here I am stuck ...
        endforeach;
    endforeach;
Теги:

1 ответ

5
Лучший ответ

Вы, кажется, были довольно близки, за исключением того факта, что у вас уже есть элементы массива в $filter и вам нужно только удалить первую переменную (используя array_shift()) и вставить ее.

Дело в том, что array_shift() (ссылка на документацию) возвращает удаленное значение, чтобы вы могли сохранить это в массиве и использовать его для ключа. И массив после переключения готов к использованию.

Здесь полный результат:

<?php
$filters = array('rooms-4-5', 'city-london-berlin-paris');
$out = array();
foreach($filters as $filter) {
    $filter_exploded = explode('-',$filter);
    $val = array_shift($filter_exploded); // remove first element, add it to the variable
    $out[$val] = $filter_exploded;
}
var_dump($out);
  • 0
    Да, вы правы, я был в замешательстве и не могу понять. Может быть, немного сна поможет. Система позволит мне принять ответ в течение 5 минут. Спасибо.
  • 0
    Одно, как я могу относиться к городам как к new-work ?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню