3v4l.org

run code in 300+ PHP versions simultaneously
<?php function numberOfPairs($a,$k){ $a=array_count_values($a); // enable use of the very fast isset() function and avoid iterating duplicates ksort($a); // order so that only the lower values need to be iterated foreach($a as $num=>$occur){ if(($double=$num*2)>=$k){ // we are at or past the middle if($double==$k && $occur>1) $result[]=[$num,$k-$num]; // addends are equal and 2 exist, store before break break; }elseif(isset($a[$k-$num])){ // matching addend found, store & continue $result[]=[$num,$k-$num]; } } var_export($result); } $a = [6,6,3,9,3,5,1]; $k = 12; numberOfPairs($a,$k);
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
array ( 0 => array ( 0 => 3, 1 => 9, ), 1 => array ( 0 => 6, 1 => 6, ), )

preferences:
221.19 ms | 404 KiB | 300 Q