Хотя это не то, что вы просили, я считаю, что ассоциативный массив больше подходит. (Если у вас нет причин для указанного формата массива).
Я разрываю строки и использую первую строку в качестве ключей, с которыми позже использую array_combine, чтобы сделать его ассоциативным массивом.
$str ="user_id, fname, lname, country
001, cake, chocolate, US
002, ice cream, vanilla, US
003, pie, pumpkin, US";
$arr = explode("\n", $str); //explode on new line
$keys = explode(", ",array_splice($arr, 0,1)[0]); // get headers to $keys
//loop the array by reference with '&'
foreach($arr as &$sub){
$sub = array_combine($keys, explode(", ", $sub)); // change the string into an associative array
}
unset($sub); //unset reference
var_dump($arr); //output
Выход:
array(3) {
[0]=>
array(4) {
["user_id"]=>
string(3) "001"
["fname"]=>
string(4) "cake"
["lname"]=>
string(9) "chocolate"
["country"]=>
string(2) "US"
}
[1]=>
array(4) {
["user_id"]=>
string(3) "002"
["fname"]=>
string(9) "ice cream"
["lname"]=>
string(7) "vanilla"
["country"]=>
string(2) "US"
}
[2]=>
array(4) {
["user_id"]=>
string(3) "003"
["fname"]=>
string(3) "pie"
["lname"]=>
string(7) "pumpkin"
["country"]=>
string(2) "US"
}
}
https://3v4l.org/354iT
Возможно, еще лучше, чтобы основным ключом массива был идентификатор пользователя, как в этом примере:
https://3v4l.org/hMLil