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));

preferences:
25.7 ms | 407 KiB | 5 Q