【问题标题】:Most efficient way to query multi-dimensional array for value when sub arrays have identical keys in php当子数组在php中具有相同的键时,查询多维数组值的最有效方法
【发布时间】:2011-08-14 16:18:03
【问题描述】:

首先,我从 db 查询中获得了一个结果数组,我通过 foreach 将其输出到 html 列表中。其次,我有一个包含相关数据的多维数组。关系在两个数据源中由“entry_id”定义。

我想在 foreach 的每次迭代中查询多维数组,以检查是否有匹配的 entry_id,如果有,我想拉出页面标题以添加到我的 html 列表中。 多维数组如下所示:

array(4) { 
    [0]=> array(2) { 
            ["entry_id"]=> string(1) "1" 
            ["title"]=> string(4) "Page Title 1" 
        } 
        [1]=> array(2) { 
            ["entry_id"]=> string(1) "2" 
            ["title"]=> string(5) "Page Title 2"
        }
        [2]=> array(2) { 
            ["entry_id"]=> string(1) "3" 
            ["title"]=> string(8) "Page Title 3" 
        } 
        [3]=> array(2) { 
            ["entry_id"]=> string(1) "4" 
            ["title"]=> string(5) "Page Title 4" } 
        }

首先,您将如何查询该多维数组并在该迭代中获取您需要的页面标题,同时记住子数组具有相同的键?

其次,最有效的方法是什么,我还应该提到,理论上数组可能会变得非常大。

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    变换数组,得到结构

    entry_id => title
    

    array(
        "1" => "Page Title 1",
        "2" => "Page Title 2"
    )
    

    那么获取标题就是访问带有entry_id值的数组。

    如果可以,从头开始构建这样的数组,如果不行,则必须遍历它并创建此结构。

    【讨论】:

    • 我无法更改数组最初的输出方式。您将如何更改我拥有的数组以使其看起来像那样?
    • @bjohnb:迭代它并创建一个新数组:php.net/manual/en/control-structures.foreach.php
    • 哦,好吧,我不知道是否有更聪明的方法使用 array_flip 或类似方法。好的,非常感谢你,太好了!
    • @bjohnb:不,不幸的是没有内置的方法。您确实必须迭代并提取值。编码愉快!
    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多