fork(1) download
  1. <?php
  2.  
  3. $GET = [
  4. 'pay' => 0,
  5. 'card' => 1,
  6. 'test' => false,
  7. ];
  8.  
  9. $arr = [
  10. 0 => (object)['pay' => 1],
  11. 1 => (object)['card' => 1],
  12. 2 => (object)['pay' => 0],
  13. 3 => (object)['card' => 0],
  14. 4 => (object)['card' => 0, 'pay' => 1],
  15. 5 => (object)['card' => 1, 'pay' => 1],
  16. 6 => (object)['card' => 0, 'pay' => 0],
  17. 7 => (object)['card' => 1, 'pay' => 0],
  18. ];
  19.  
  20. $allowedFilter = [
  21. 'pay',
  22. 'card',
  23. ];
  24. $allowedValues = [0, 1];
  25.  
  26. foreach ($arr as $index => $item) {
  27. $allFilter = true;
  28.  
  29. foreach ($allowedFilter as $key) {
  30. if (!isset($GET[$key]) || !in_array($GET[$key], $allowedValues)) {
  31. //Нет фильтра, либо значение неправильно. Игнорируем фильтр
  32. continue;
  33. }
  34.  
  35. if (empty($GET[$key]) && empty($item->$key)) {
  36. //Фильтр неактивный, значение тоже должно быть неактивно, для принятия
  37. } elseif (!empty($GET[$key]) && !empty($item->$key)) {
  38. //Фильтр активный, значение тоже должно быть активно, для принятия
  39. } else {
  40. //Фильтр отличается от значения, охрана отмена =)
  41. $allFilter &= false;
  42. }
  43. }
  44.  
  45. if ($allFilter) {
  46. echo "Все фильтры совпали в позиции #{$index}\n";
  47. }
  48. }
  49.  
Success #stdin #stdout 0.03s 23520KB
stdin
Standard input is empty
stdout
Все фильтры совпали в позиции #1
Все фильтры совпали в позиции #7