3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array1 = [ "bill_type" => "1", "bill_number" => "BIL-003", "order_number" => "ON-003", "items" => [ "track_inventory" => "0", "sku1" => "sku1", "name" => "Kidswear1" ] ]; $array2 = [ "bill_type" => "1", "bill_number" => "BIL-003", "order_number" => "ON-003", "items" => [ "track_inventory" => "0", "sku1" => "sku2", "name" => "Pant" ] ]; $array3 = [ "bill_type" => "1", "bill_number" => "BIL-002", "order_number" => "ON-002", "items" => [ "track_inventory" => "0", "sku1" => "sku3", "name" => "Pants" ] ]; $result = []; foreach ([$array1, $array2, $array3] as $row) { $key = $row['bill_number']; if (!isset($result[$key])) { $row['items'] = [$row['items']]; $result[$key] = $row; } else { $result[$key]['items'][] = $row['items']; } } var_export($result);
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array ( 'BIL-003' => array ( 'bill_type' => '1', 'bill_number' => 'BIL-003', 'order_number' => 'ON-003', 'items' => array ( 0 => array ( 'track_inventory' => '0', 'sku1' => 'sku1', 'name' => 'Kidswear1', ), 1 => array ( 'track_inventory' => '0', 'sku1' => 'sku2', 'name' => 'Pant', ), ), ), 'BIL-002' => array ( 'bill_type' => '1', 'bill_number' => 'BIL-002', 'order_number' => 'ON-002', 'items' => array ( 0 => array ( 'track_inventory' => '0', 'sku1' => 'sku3', 'name' => 'Pants', ), ), ), )

preferences:
93.01 ms | 408 KiB | 5 Q