fork download
  1. <?php
  2. $orders = array(
  3. 'id' => '123',
  4. 'name' => 'John',
  5. 'lastname'=>'Carter',
  6. 'rate' => '1.0'
  7. ),
  8. 'id' => '546',
  9. 'name' => 'Ben',
  10. 'lastname'=>'Wall',
  11. 'rate' => '0.25'
  12. ),
  13. 'id' => '666',
  14. 'name' => 'John Bow',
  15. 'lastname'=>'Porter',
  16. 'rate' => '0.25'
  17. ),
  18. 'id' => '156',
  19. 'name' => 'John',
  20. 'lastname'=>'Carter',
  21. 'rate' => '0.5'
  22. )
  23. );
  24.  
  25. $tmpOrders = array();
  26.  
  27. // Add all elements with rate >= 1.0
  28. foreach($orders as $order) {
  29. if((float)$order['rate'] >= 1.0) {
  30. $tmpOrders[] = $order;
  31. }
  32. }
  33.  
  34. // Check other elements
  35. foreach($orders as $order) {
  36. // Check only rate < 1.0
  37. if((float)$order['rate'] < 1.0) {
  38. // Check duplicate
  39. $exists = false;
  40. foreach($tmpOrders as $tmp) {
  41. if(($tmp['name'] == $order['name']) && ($tmp['lastname'] == $order['lastname'])) {
  42. $exists = true;
  43. break;
  44. }
  45. }
  46. // Add if not exists
  47. if(!$exists) {
  48. $tmpOrders[] = $order;
  49. }
  50. }
  51. }
  52.  
  53. $orders = $tmpOrders;
  54.  
  55. echo "<pre>";
  56. print_r($orders);
  57. echo "<pre>";
  58.  
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
<pre>Array
(
    [0] => Array
        (
            [id] => 123
            [name] => John
            [lastname] => Carter
            [rate] => 1.0
        )

    [1] => Array
        (
            [id] => 546
            [name] => Ben
            [lastname] => Wall
            [rate] => 0.25
        )

    [2] => Array
        (
            [id] => 666
            [name] => John Bow
            [lastname] => Porter
            [rate] => 0.25
        )

)
<pre>