我有一个非常简单的stdClass对象数组,每个对象看起来像这样:
object(stdClass)[408]
public 'propertyID' => string '2232' (length=4)
public 'price' => string '100000' (length=6)
public 'bedroomNumber' => string '2' (length=1)
此外,我还有一个表单,其中有一些选择字段,如最低价,最高价和最低卧室号,它应该根据用户选择过滤数组项,问题是我不知道如何处理用户是否以有效的方式选择多个过滤器,例如,如果用户只想获得最高价格为10000和3间卧室的物品。
我虽然对每种条件都使用if
语句,但它根本没有效率(我必须做一些事情,比如他们只按价格过滤,卧室号码,价格和卧室,以及每一个可能的组合)。
有一种简单的方法吗?
提前致谢!
答案 0 :(得分:1)
您可以使用array_filter
来过滤数组。只需使用一个回调函数,该函数使用任何启用的过滤器。
示例:
function my_filter($object)
{
$result = true;
if (/*max price filter enabled*/) {
$result = $result && /* $object's price is <= max price */;
}
if /* more filters... */
return $result;
}
$new_array = array_filter($my_array, "my_filter");