3v4l.org

run code in 500+ PHP versions simultaneously
<?php $array = [ [ 'product' => [ 'value' => 'basic', 'label' => 'Basic' ], 'countries' => [ 'Japan', // these 'Korea' // two... ], ], [ 'product' => [ 'value' => 'pro', 'label' => 'Pro' ], 'countries' => [ 'Japan', // ...and these two 'Korea' // are identical... ], ], [ 'product' => [ 'value' => 'expert', 'label' => 'Expert' ], 'countries' => [ 'Japan', 'France' ], ] ]; $result = []; foreach ($array as $row) { sort($row['countries']); $compositeKey = implode('_', $row['countries']); if (!isset($result[$compositeKey])) { $result[$compositeKey] = $row; } elseif (isset($result[$compositeKey]['product']['value'])) { $result[$compositeKey]['product'] = [ $result[$compositeKey]['product'], $row['product'] ]; } else { $result[$compositeKey]['product'][] = $row['product']; } } echo json_encode(array_values($result), JSON_PRETTY_PRINT);
Output for rfc.property-hooks, git.master, git.master_jit
[ { "product": [ { "value": "basic", "label": "Basic" }, { "value": "pro", "label": "Pro" } ], "countries": [ "Japan", "Korea" ] }, { "product": { "value": "expert", "label": "Expert" }, "countries": [ "France", "Japan" ] } ]

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
48.16 ms | 1359 KiB | 4 Q