Как из числового сделать ассоциативный массив?

На сервере получаю массив, длина его может быть разной:

       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, ....];
→ Ссылка