Есть массив объектов у которых есть параметры: pay и cart, которые имеют значение 1 или 0. Я принимаю GET параметры pay и cart со значениями:
if(isset($_GET['pay'])) {
$pay_get = $_GET['pay'];
} else {
$pay_get = false;
}
if(isset($_GET['cart'])) {
$cart_get = $_GET['cart'];
} else {
$cart_get = false;
}
И пытаюсь отфильтровать массив по этим значениям:
foreach ($arr => $item) {
//Фильтр по выкупу
if($pay_get != false && $pay_get != $item->pay) {
continue;
}
//Фильтр по карте
if($cart_get != false && $cart_get != $item->cart) {
continue;
}
$object = new stdClass;
$object->name = $item->name;
$object->properties->pay = $item->pay;
$object->properties->cart = $item->cart;
array_push($new_filtered_array, $object);
}
Но что то не выходит корректно отфильтровать, мозги что то уже отказываются понимать почему. Как тут быть?
<?php
$GET = [
'pay' => 0,
'card' => 1,
'test' => false,
];
$arr = [
0 => (object)['pay' => 1],
1 => (object)['card' => 1],
2 => (object)['pay' => 0],
3 => (object)['card' => 0],
4 => (object)['card' => 0, 'pay' => 1],
5 => (object)['card' => 1, 'pay' => 1],
6 => (object)['card' => 0, 'pay' => 0],
7 => (object)['card' => 1, 'pay' => 0],
];
$allowedFilter = [
'pay',
'card',
];
$allowedValues = [0, 1];
foreach ($arr as $index => $item) {
$allFilter = true;
foreach ($allowedFilter as $key) {
if (!isset($GET[$key]) || !in_array($GET[$key], $allowedValues)) {
//Нет фильтра, либо значение неправильно. Игнорируем фильтр
continue;
}
if (empty($GET[$key]) && empty($item->$key)) {
//Фильтр неактивный, значение тоже должно быть неактивно, для принятия
} elseif (!empty($GET[$key]) && !empty($item->$key)) {
//Фильтр активный, значение тоже должно быть активно, для принятия
} else {
//Фильтр отличается от значения, охрана отмена =)
$allFilter &= false;
}
}
if ($allFilter) {
echo "Все фильтры совпали в позиции #{$index}\n";
}
}
https://ideone.com/Q5fi1L
Виртуальный выделенный сервер (VDS) становится отличным выбором
Обычно различного рода экзепшенами стараются закрыть внутренние ошибкиПриведу примитивный пример, чтобы понятнее была суть вопроса
Настраиваю приложение которое будет получать посты со стены публичной страницы и постить на сайте, столкнулся с некоторыми непонятностями,...