Как сделать ассоциативный массив из строки в PHP? - PullRequest
0 голосов
/ 18 ноября 2018

Предположим, теперь у меня есть строка:

$detail = "1=>Apple, 2=>Cheesecake, 3=>Banana";

Как мне преобразовать или разобрать строку $detail в ассоциативный массив и сделать так:

$detail_arr['1'] = "Apple";
$detail_arr['2'] = "Cheesecake";
$detail_arr['3'] = "Banana";

ИЛИ

как код ниже:

$detail_arr = array("1"=>"Apple", "2"=>"Cheesecake", "3"=>"Banana");

foreach($detail_arr as $x=> $x_name)
{
    echo "Price=" . $x . ", Name=" . $x_name;
}

и будет отображаться:

Price = 1, Name = Apple, ...

1 Ответ

0 голосов
/ 18 ноября 2018

Используйте explode() для преобразования в строку с помощью , разделителя и просмотра результата в цикле

$arr = [];
foreach (explode(',', $detail) as $item){
    $parts = explode('=>', $item);
    $arr[trim($parts[0])] = $parts[1];
}

Проверьте результат в demo

Также вы можете использовать preg_match_all() и array_combine() для выполнения этой работы.

preg_match_all("/(\d+)=>([^,]+)/", $detail, $matches);
$arr = array_combine($matches[1], $matches[2]);
...