【问题标题】:how to filter an array by multiple parameters in php?如何在php中通过多个参数过滤数组?
【发布时间】:2011-11-03 08:35:41
【问题描述】:

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

有没有简单的方法可以做到这一点?

提前致谢!

【问题讨论】:

  • 在应用任何过滤器或数组函数之前,您可能需要将 stdClass 转换为数组:if-not-true-then-false.com/2009/…
  • @Php "我有一个 数组 stdClass 对象"...
  • @deceze 你知道卖老花镜的好店吗?

标签: php arrays filter multidimensional-array


【解决方案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");

【讨论】:

  • 你能举个例子吗?
  • 非常感谢,我尝试为每个参数使用不同的过滤器并且效果很好,但是在单个过滤器中使用所有参数看起来是一个更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
  • 2021-05-12
  • 2019-11-28
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多