3v4l.org

run code in 300+ PHP versions simultaneously
<?php function find_pairs($array) { // re-index to 0 $array = array_values($array['parent_id']); // sort so the longest arrays are first usort($array, function ($a, $b) { return count($b) - count($a); }); // output array $pairs = array(); $c = count($array); $i = 0; // loop while there are enough values to pair (2 or more) while (array_reduce($array, function ($c, $v) { return $c + count($v); }, 0) > 1) { // make sure there are some elements in this array while (!count($array[$i])) $i = ($i + 1) % $c; // find the next array with a value $j = ($i + 1) % $c; while (!count($array[$j])) $j = ($j + 1) % $c; // have we come full circle? if ($j == $i) break; // save the pair $pairs[] = array(array_shift($array[$i]), array_shift($array[$j])); // move on to the next array $i = ($i + 1) % $c; } return $pairs; } $array = array ('parent_id' => array([1])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1], [3])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1], [3], [5])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1], [3], [5], [7])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3], [5])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3], [5], [7])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3, 4])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3, 4], [5])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3, 4], [5], [7])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3, 4], [5, 6])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3, 4], [5, 6], [7])); print_r(find_pairs($array)); $array = array ('parent_id' => array([1, 2], [3, 4], [5, 6], [7, 8])); print_r(find_pairs($array));
Output for git.master, git.master_jit, rfc.property-hooks
Array ( ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 5 [1] => 7 ) ) Array ( ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 5 [1] => 2 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 5 [1] => 7 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 4 [1] => 2 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 4 [1] => 5 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 4 [1] => 5 ) [2] => Array ( [0] => 7 [1] => 2 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 4 [1] => 5 ) [2] => Array ( [0] => 6 [1] => 2 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 4 [1] => 5 ) [2] => Array ( [0] => 6 [1] => 7 ) ) Array ( [0] => Array ( [0] => 1 [1] => 3 ) [1] => Array ( [0] => 4 [1] => 5 ) [2] => Array ( [0] => 6 [1] => 7 ) [3] => Array ( [0] => 8 [1] => 2 ) )

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:
125.36 ms | 415 KiB | 5 Q