3v4l.org

run code in 300+ PHP versions simultaneously
<?php $json = '[{"id":37,"slug":"red","stock":true,"name":"Red","default":0,"sizes":"38"},{"id":38,"slug":"red","stock":true,"name":"Red","default":0,"sizes":"40"},{"id":34,"slug":"red","stock":true,"name":"Red","default":0,"sizes":"36"},{"id":26,"slug":"green","stock":true,"name":"Green","default":0,"sizes":"48"}]'; $array = json_decode($json,1); $expected = []; foreach($array as $v) { $expected[$v['slug']][] = $v; } $expected_v2 = []; foreach($expected as $k1=>$v1) { array_push($expected_v2,['slug'=>$k1,'name'=>ucfirst($k1),'sizes'=>$v1]); } print_r($expected_v2); echo json_encode($expected_v2); ?>
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 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.27, 8.4.1 - 8.4.14
Array ( [0] => Array ( [slug] => red [name] => Red [sizes] => Array ( [0] => Array ( [id] => 37 [slug] => red [stock] => 1 [name] => Red [default] => 0 [sizes] => 38 ) [1] => Array ( [id] => 38 [slug] => red [stock] => 1 [name] => Red [default] => 0 [sizes] => 40 ) [2] => Array ( [id] => 34 [slug] => red [stock] => 1 [name] => Red [default] => 0 [sizes] => 36 ) ) ) [1] => Array ( [slug] => green [name] => Green [sizes] => Array ( [0] => Array ( [id] => 26 [slug] => green [stock] => 1 [name] => Green [default] => 0 [sizes] => 48 ) ) ) ) [{"slug":"red","name":"Red","sizes":[{"id":37,"slug":"red","stock":true,"name":"Red","default":0,"sizes":"38"},{"id":38,"slug":"red","stock":true,"name":"Red","default":0,"sizes":"40"},{"id":34,"slug":"red","stock":true,"name":"Red","default":0,"sizes":"36"}]},{"slug":"green","name":"Green","sizes":[{"id":26,"slug":"green","stock":true,"name":"Green","default":0,"sizes":"48"}]}]

preferences:
189.29 ms | 418 KiB | 5 Q