3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data = [ 'Orders' => [ [ 'transaction_id' => '78078', 'date' => 1616277653, 'currency' => 'EUR', 'items' => [ ['title' => 'Title 1', 'quantity' => 200, 'price' => 2.1, 'sku' => '1T.810BK'], ['title' => 'Title 2', 'quantity' => 250, 'price' => 1.78, 'sku' => '1090.005BK'], ], ], [ 'transaction_id' => 78079, 'date' => 1616597838, 'currency' => 'EUR', 'items' => [ ['title' => 'title 3', 'quantity' => 3, 'price' => 118.3, 'sku' => '1.DIYBOX.ULT.638RE'], ], ], [ 'transaction_id' => 78080, 'date' => 1616598322, 'currency' => 'EUR', 'items' => [ ['title' => 'title 2', 'quantity' => 300, 'price' => 1.78, 'sku' => '1090.005BK'], ], ] ] ]; $result = []; foreach ($data['Orders'] as $order) { foreach ($order['items'] as $item) { $result[$item['sku']] = ($result[$item['sku']] ?? 0) + $item['quantity']; } } var_export($result); echo "\n===\n"; var_export( array_column(array_merge_recursive(... array_column($data['Orders'], 'items')), 'quantity', 'sku') ); echo "\n===\n"; $sku = ''; $qt = -1; $result = []; array_walk_recursive($data, function($v, $k) use(&$sku,&$qt,&$result) { if($k === 'quantity'){ if($sku !== ''){ $result[ $sku ] = $v; $sku = ''; }else { $qt = $v; } }else if($k === 'sku'){ if($qt !== -1){ $result[ $v ] = $qt; $qt = -1; }else{ $sku = $v; } } }); var_export($result);
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.4, 8.3.6 - 8.3.27, 8.4.1 - 8.4.14
array ( '1T.810BK' => 200, '1090.005BK' => 550, '1.DIYBOX.ULT.638RE' => 3, ) === array ( '1T.810BK' => 200, '1090.005BK' => 300, '1.DIYBOX.ULT.638RE' => 3, ) === array ( '1T.810BK' => 200, '1090.005BK' => 300, '1.DIYBOX.ULT.638RE' => 3, )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 array ( '1T.810BK' => 200, '1090.005BK' => 550, '1.DIYBOX.ULT.638RE' => 3, ) === array ( '1T.810BK' => 200, '1090.005BK' => 300, '1.DIYBOX.ULT.638RE' => 3, ) === array ( '1T.810BK' => 200, '1090.005BK' => 300, '1.DIYBOX.ULT.638RE' => 3, )

preferences:
140.87 ms | 408 KiB | 5 Q