Мне нужно преобразовать строку
"name1", "b", "2", "name2", "c", "3", "name3", "b", "2", ....
к массиву вроде
$arr[0]['name'] = "name1"; $arr[0]['char'] = "b"; $arr[0]['qnt'] = "2"; $arr[1]['name'] = "name2"; $arr[1]['char'] = "c"; $arr[1]['qnt'] = "3"; $arr[2]['name'] = "name3"; $arr[2]['char'] = "b"; $arr[2]['qnt'] = "2";
Я использовал explode для извлечения строки в массив, но она не работает
Есть идеи?
$input = '"name1", "b", "2", "name2", "c", "3", "name3", "b", "2"'; $input = str_replace('"', '', $input); $input = explode(', ', $input); $output = array(); $i = 0; while ($i < count($input)) { $output[] = array( 'name' => $input[$i++], 'char' => $input[$i++], 'qnt' => $input[$i++] ); } print_r($output);
Вывод:
Array ( [0] => Array ( [name] => name1 [char] => b [qnt] => 2 ) [1] => Array ( [name] => name2 [char] => c [qnt] => 3 ) [2] => Array ( [name] => name3 [char] => b [qnt] => 2 ) )
Если вам не нужны ключи массива, которые являются числовыми, вы можете сделать следующее:
$string = 'name1, b, 2, name2, c, 3, name3, b, 2'; print_r( array_chunk( explode(',', $string), 3 ) );