You can get the keys with array_column
, then map array_combine
over the rows.
$keys = array_column($object->metaData, 'name');
$result = array_map(fn($row) => array_combine($keys, $row), $object->rows);
You could make it a one-liner like this, but it's more difficult to read, and it will call array_column
for every row instead of just once.
$result = array_map(fn($row) => array_combine(array_column($object->metaData, 'name'), $row), $object->rows);
You need to be sure that each row is the same size as the metadata array or array_combine
will fail. Based on the appearance of your object, it looks like this would probably always be true, but it's important to note.