@exedis

Как заполнить такой массив в цикле?

Здравствуйте, надо заполнить массив такого вида в цикле. Как лучше это сделать?
$city= array (
  'Москва и Московская обл.' => array (0 => 'Москва', 1 => 'Абрамцево'),
  'Санкт-Петербург' => array (0 => 'Санкт-Петербург', 1 => 'Александровская'),
);
  • Вопрос задан
  • 285 просмотров
Пригласить эксперта
Ответы на вопрос 1
Не используйте такие ключи. Приведите массив к виду
$data = [
    [
        'name' => 'Москва и Московская обл.',
        'items' => ['Москва', 'Абрамцево']
    ],
    [
        'name' => 'Санкт-Петербург',
        'items' => ['Санкт-Петербург', 'Александровская']
    ]
];


Не претендую на гугу php, но вот:
spoiler
class Location
{
    private $data;

    /**
     * Location constructor.
     *
     * @param array $data
     */
    function __construct($data = [])
    {
        $this->data = $data;
    }

    /**
     * Get cities by region
     *
     * @param string $region
     *
     * @return array
     */
    public function getCitiesByRegion($region)
    {
        $key = array_search($region, array_column($this->data, 'region'));

        if ( $key === false ) return false;

        return $this->data[$key]['items'];
    }
}

$data = [
    [
        'region' => 'Москва и Московская обл.',
        'items' => ['Москва', 'Абрамцево']
    ],
    [
        'region' => 'Санкт-Петербург',
        'items' => ['Санкт-Петербург', 'Александровская']
    ]
];

$location = new Location($data);

print_r($location->getCitiesByRegion('Санкт-Петербург'));

Ответ написан
Комментировать
Ваш ответ на вопрос

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

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