Преобразование равенства (=) в разделенное значение в ключ и пару в PHP

#php #arrays #associative-array

Вопрос:

У меня есть данные, поступающие вот так

 1 = Answer1<br />
2 = Answer2<br />
3 = Answer3<br />
4 = Answer4<br />
5 = Answer5<br />
6 = Answer6<br />
7 = Answer7<br />
8 = Answer8<br />
9 = Answer9<br />
10 = Answer10<br />
11 = Answer11<br />
12 = Answer12<br />
13 = Answer13<br />
14 = Answer14<br />
15 = Answer15<br />
16 = Answer16<br />
17 = Answer17<br />
18 = Answer18<br />
19 = Answer19<br />
20 = Answer20<br />
21 = Answer21<br />
22 = Answer22<br />
23 = Answer23<br />
24 = Answer24<br />
25-26 = Answer25,Answer26<br />
27 = Answer27<br />
28-29 = Answer28,Answer29
 

Выше указано значение переменной $lines. Поскольку ответ может прийти в массиве, я получил 27 ключей при использовании explode like $lines = explode( "rn", $lines ); .

Ожидаемым моим ответом будет массив с номером до = и значением после = , и если ответ разделен запятыми, я бы хотел, чтобы он был следующим,

28-29 => array('Answer28', 'Answer29');

Как я могу добиться этого с помощью PHP?

Комментарии:

1. К тому времени взорвется каждая строка = ?

Ответ №1:

Попробуйте explode() на каждой строке использовать foreach()

https://www.php.net/manual/en/function.explode.php

 
$lines = explode("<br />rn", $lines);

$result = [];
foreach ($lines as $line) {
    [$k, $v] = explode(" = ", $line);
    $result[$k] = explode(",", $v);
}

print_r($result);