Задать вопрос
@viktorross

Как правильно разбить массив на ключи и значения?

Здравствуйте, подскажите пожалуйста как правильно разбить массив в цикле на ключи и значения
Есть поле all_fields в бд c вот таким содержимым
region=Омская область,city=омск
region=Челябинская область,city=челябинск
вот так разбиваю содержимое поля (разбираю данные уже в цикле)
$result[$i]['all_fields'] = explode(",", $result[$i]['all_fields']);

Получаю вот такой список массивов
array(17) {  [0]=> string(35) "region=Омская область" [1]=> string(15) "city=омск" [2]=> string(19)  }
array(17) {  [0]=> string(35) "region=Челябинская область" [1]=> string(15) "city=челябинск" [2]=> string(19)  }


далее хочу снова сделать explode уже разбив результаты на ключ и значение и получить что-то вроде этого

$result[$i][$key] = $value; где $key будет region, а value - Омская область, ну и т.д

как мне этого добиться?
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$result = [
    ['all_fields' => 'region=Омская область,city=омск'],
    ['all_fields' => 'region=Челябинская область,city=челябинск'],
];

$data = array_map(
    fn($str) => array_reduce(
        explode(',', $str),
        function ($acc, $cur) {
            [$key, $val] = explode('=', $cur);
            $acc[$key] = $val;
            return $acc;
        },
        [],
    ),
    array_column($result, 'all_fields'),
);

print_r($data);

Array (
    [0] => Array (
            [region] => Омская область
            [city] => омск
        )
    [1] => Array (
            [region] => Челябинская область
            [city] => челябинск
        )
)
Ответ написан
Комментировать
@Mylistryx
$allFields = explode("," , $result[$i]['all_fields']);
foreach ($allFields as $item) {
    [$key, $value] = explode('=',  $item);
    $result[$i][$key] = $value;
}

Как то так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pantsarny
parse_str
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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