Как из числового сделать ассоциативный массив?
На сервере получаю массив, длина его может быть разной:
array(2) {
[0]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(6) "Color3"
[2]=>
string(11) "ASTM D15003"
[3]=>
string(3) "552"
}
[1]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(6) "Color4"
[2]=>
string(11) "ASTM D15004"
[3]=>
string(1) "4"
}
}
Как сделать, чтобы было так:
array(2) {
[0]=>
array(4) {
"print"=> "1"
"inspection"=> "Color3"
"method"=> "ASTM D15003"
"result"=>"552"
}
[1]=>
array(4) {
"print"=> "1"
"inspection"=> "Color3"
"method"=> "ASTM D15003"
"result"=>"552"
}
}
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
$arr = [
['1', 'Color3', 'AStM D15003', '552'],
['1', 'Color4', 'AStM D15004', '4'],
];
$result = [];
foreach ($arr as $item) {
$temp = [];
$temp['print'] = $item[0];
$temp['inspection'] = $item[1];
$temp['method'] = $item[2];
$temp['result'] = $item[3];
array_push($result, $temp);
}
print_r($result);
Автор решения: teran
→ Ссылка
для преобразования массива в новый вид обычно используют функцию array_map. Для генерация массива известными ключами и значениями используют array_combine.
$result = array_map(fuction($v){
return array_combine(['print',....], $v);
}, $input);
без combine можете и просто вернуть новый элемент
return ['print' => $v[0], .....];
или предварительно развернуть массив в переменные, это может быть удобное, если также следует какую-то логику выполнить,чтобы не таскать с собой индексы эти.
[$p, $i, $m, $r] = $v;
return ['print' => $p, ....];