如何在php中通过多个参数过滤数组?

时间:2011-08-25 04:49:33

标签: php arrays filter multidimensional-array

我有一个非常简单的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语句,但它根本没有效率(我必须做一些事情,比如他们只按价格过滤,卧室号码,价格和卧室,以及每一个可能的组合)。

有一种简单的方法吗?

提前致谢!

1 个答案:

答案 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");