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(); for ($i = 0, $j = 1; $i < count($array) - 1; $i++) { if (!count($array[$i])) continue; while ($j <= $i || $j < count($array) && !count($array[$j])) $j++; while (count($array[$i]) && isset($array[$j]) && count($array[$j])) { $pairs[] = array(array_shift($array[$i]), array_shift($array[$j])); // exhausted other arrays elements? while ($j < count($array) && !count($array[$j])) $j++; } } return $pairs; } $array = array ( 'parent_id' => array ( 0 => array ( 0 => 12 ), 1 => array ( 0 => 22 ), 2 => array ( 0 => 23, 1 => 24 ) ) ); print_r(find_pairs($array)); $array = array ( 'parent_id' => array ( 9 => array ( 0 => 12 ), 20 => array ( 0 => 25, 1 => 22 ), 21 => array ( 0 => 23, 1 => 24 ) ) ); print_r(find_pairs($array)); $array = array ( 'parent_id' => array ( 9 => array ( 0 => 11, 1 => 12 ), 10 => array ( 0 => 13, 1 => 14 ), 20 => array ( 0 => 21, 1 => 22 ), 21 => array ( 0 => 23 ) ) ); print_r(find_pairs($array));
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
Array ( [0] => Array ( [0] => 23 [1] => 12 ) [1] => Array ( [0] => 24 [1] => 22 ) ) Array ( [0] => Array ( [0] => 25 [1] => 23 ) [1] => Array ( [0] => 22 [1] => 24 ) ) Array ( [0] => Array ( [0] => 11 [1] => 13 ) [1] => Array ( [0] => 12 [1] => 14 ) [2] => Array ( [0] => 21 [1] => 23 ) )
Output for 7.1.25 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
Array ( [0] => Array ( [0] => 23 [1] => 12 ) [1] => Array ( [0] => 24 [1] => 22 ) ) Array ( [0] => Array ( [0] => 23 [1] => 25 ) [1] => Array ( [0] => 24 [1] => 22 ) ) Array ( [0] => Array ( [0] => 11 [1] => 13 ) [1] => Array ( [0] => 12 [1] => 14 ) [2] => Array ( [0] => 21 [1] => 23 ) )

preferences:
163.5 ms | 410 KiB | 5 Q