fork download
  1. <?php
  2.  
  3. $array = array(array("_source" => array("dealer_id" => 4)),array("_source" => array("dealer_id" => 3)),array("_source" => array("dealer_id" => 2)),array("_source" => array("dealer_id" => 5)),array("_source" => array("dealer_id" => 7)),array("_source" => array("dealer_id" => 9)), array("_source" => array("dealer_id" => 8)),array("_source" => array("dealer_id" => 10)),array("_source" => array("dealer_id" => 12)),array("_source" => array("dealer_id" => 3)),array("_source" => array("dealer_id" => 12)));
  4.  
  5. $indexed_array = [];
  6. $results = [];
  7.  
  8. foreach ($array as $e) {
  9. if (!isset($indexed_array[$e['_source']['dealer_id']])) {
  10. $indexed_array[$e['_source']['dealer_id']] = $e;
  11. }
  12. else {
  13. // add the 2 results with the same dealer_id to your results
  14. $results[] = $indexed_array[$e['_source']['dealer_id']];
  15. $results[] = $e;
  16. break;
  17. }
  18. }
  19.  
  20.  
  21. if (!empty($results)) {
  22. // get 2 more elements with a different dealer_id
  23. foreach ($array as $e) {
  24. if ($e['_source']['dealer_id'] != $results[0]['_source']['dealer_id']) {
  25. $results[] = $e;
  26. if (count($results) > 3) {
  27. break;
  28. }
  29. }
  30. }
  31. }
  32. else {
  33. // there are no duplicates so just get the 1st 4 elements
  34. $results = array_slice($array, 0, 4);
  35. }
  36.  
  37. print_r($results);
  38.  
Success #stdin #stdout 0s 82880KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [_source] => Array
                (
                    [dealer_id] => 3
                )

        )

    [1] => Array
        (
            [_source] => Array
                (
                    [dealer_id] => 3
                )

        )

    [2] => Array
        (
            [_source] => Array
                (
                    [dealer_id] => 4
                )

        )

    [3] => Array
        (
            [_source] => Array
                (
                    [dealer_id] => 2
                )

        )

)