3v4l.org

run code in 300+ PHP versions simultaneously
<?php function valueSeparator(array $array) { $maxIterations = count($array); $counted = array_count_values($array); arsort($counted); $iteration = 0; $result = []; while (max($counted) > 1 && $iteration < $maxIterations) { $count = reset($counted); $value = key($counted); $result[] = $value; unset($counted[$value]); arsort($counted); if ($count > 1) { $counted = array_merge( array_splice($counted, 0, 1), [$value => $count - 1], $counted ); } ++$iteration; } array_push($result, ...array_keys($counted)); var_export($result); } $arrays = [ ['Retail', 'Retail', 'Food', 'Food', 'Retail'], ['Retail', 'Retail', 'Food', 'Charity', 'Entertainment', 'Entertainment', 'Transport', 'Cosmetics'], ['Food'], ['Retail', 'Retail', 'Food', 'Retail'], ['Retail', 'Retail', 'Retail', 'Food', 'Food', 'Food', 'Charity', 'Charity', 'Charity'], ['Charity', 'Entertainment', 'Retail', 'Retail' ,'Retail'] ]; foreach ($arrays as $array) { valueSeparator($array); echo "\n---\n"; }
Output for git.master, git.master_jit, rfc.property-hooks
array ( 0 => 'Retail', 1 => 'Food', 2 => 'Retail', 3 => 'Food', 4 => 'Retail', ) --- array ( 0 => 'Retail', 1 => 'Entertainment', 2 => 'Retail', 3 => 'Entertainment', 4 => 'Food', 5 => 'Charity', 6 => 'Transport', 7 => 'Cosmetics', ) --- array ( 0 => 'Food', ) --- array ( 0 => 'Retail', 1 => 'Food', 2 => 'Retail', 3 => 'Retail', ) --- array ( 0 => 'Retail', 1 => 'Food', 2 => 'Charity', 3 => 'Food', 4 => 'Charity', 5 => 'Retail', 6 => 'Charity', 7 => 'Retail', 8 => 'Food', ) --- array ( 0 => 'Retail', 1 => 'Charity', 2 => 'Retail', 3 => 'Entertainment', 4 => 'Retail', ) ---

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:
78.82 ms | 402 KiB | 8 Q