【问题标题】:Returning unique values of a multi-dimensional array with CodeIgniter PHP使用 CodeIgniter PHP 返回多维数组的唯一值
【发布时间】:2009-07-18 14:22:40
【问题描述】:

我正在开发一个房地产租赁网站。搜索结果页面将包含属性结果列表。我打算重新定义结果,比如按城镇、国家、财产类型等。

假设用户搜索“法国”。所有相关属性都将返回并显示在列表中。

但是,我还需要重用此数组,以仅显示搜索结果数组中唯一的城镇名称。例如蒙彼利埃、里昂、雷恩、尼斯等。这个想法是当用户点击“尼斯”时,只有“尼斯”属性会返回。我还想显示那个城镇有多少房产。

关于我想要达到的目标的最接近的例子。 http://www.miaandmaggie.com/dog-collars-leashes.html

任何想法如何使用我的搜索数组来显示搜索的独特城镇?

非常感谢! M

【问题讨论】:

  • 你没有说明你的代码有什么问题。你有错误吗?结果不符合你的预期吗?

标签: php arrays codeigniter


【解决方案1】:

我注意到的几件事:

  • 对于国家参数,只需直接传递国家代码,而不是有很多 if-else 块从多个国家中选择。
  • $Q->result_array() 不是和$data 一样吗?除非您希望在循环中包含条件,否则您不需要循环。
  • dam 也是正确的,您需要在查询中包含 2 个(或可能更多)条件来进一步过滤您的结果。
  • 我还注意到您正在从单个表中查询。您可能希望为国家、地区、财产类型、城镇等创建单独的表,以规范您的架构。

【讨论】:

    【解决方案2】:

    你需要像你的 sql 语句那样的双重条件

    "... where `country`='France' and `region`='Lyon'"
    

    我不知道您的 $this->db object 是如何工作的,但从您的问题来看,我假设当您致电时

    $this->db->where('country',$country_code);
    

    这会覆盖您在上面所做的一些行:

    $this->db->where('region',$region);
    

    最终的结果是,您不仅在里昂获得了法国的所有房产

    我认为您必须了解$this->db->where 的工作原理,并找到一种方法来为您的 sql 语句指定第二个条件

    【讨论】:

    • 这不是真的 - CodeIgniter 的 ActiveRecord 允许您多次调用 where(它不会覆盖)。
    • 感谢 jiimyi 的说明,但事实上我说“我不知道你的 $this->db 是如何工作的”
    • Michael Bradley 是否需要为 where 子句指定“AND”条件?
    • 仔细阅读他的问题后,我认为他并没有抱怨代码不工作。当有人只选择国家而不显示地区时,他可能想显示不同的城市。所以他只需要一个带有不同 => 的查询“所以假设用户搜索“法国” - 我需要一个数组来仅返回搜索结果数组中唯一的城镇名称。例如蒙彼利埃、里昂、雷恩,不错等。”我想问,但我没有足够的声誉来为问题添加评论
    猜你喜欢
    • 1970-01-01
    • 2018-04-11
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2015-09-26
    相关资源
    最近更新 更多