1. <?php
    2. class Solution {
    3. public function fourSum($nums, $target) {
    4. if (!$nums) return [];
    5. sort($nums);
    6. $ret = [];
    7. for($i = 0; $i < count($nums) - 3; $i++) {
    8. if ($i > 0 && $nums[$i] == $nums[$i - 1]) continue;
    9. for($j = $i + 1; $j < count($nums) - 2; $j++) {
    10. if ($j > 0 && $nums[$j] == $nums[$j - 1]) continue;
    11. $left = $j + 1;
    12. $right = count($nums) - 1;
    13. while ($left < $right) {
    14. $sum = $nums[$i] + $nums[$j] + $nums[$left] + $nums[$right];
    15. if ($sum == $target) {
    16. array_push($ret, [$nums[$i] ,$nums[$j] ,$nums[$left] ,$nums[$right]]);
    17. while ($left < $right && $nums[$left] == $nums[$left + 1])
    18. $left++;
    19. while ($left < $right && $nums[$right] == $nums[$right - 1])
    20. $right--;
    21. } else if ($sum > $target) {
    22. $right--;
    23. } else {
    24. $left++;
    25. }
    26. }
    27. }
    28. }
    29. return $ret;
    30. }
    31. }
    32. $nums = [1, 0, -1, 0, -2, 2];
    33. $cls = new Solution();
    34. $r = $cls->fourSum($nums, 0);
    35. print_r($r);