【问题标题】:array structure of database results数据库结果的数组结构
【发布时间】:2009-07-25 22:59:36
【问题描述】:

这可能是一个非常微不足道的问题,但是这些方法中的哪一个是构造数组以返回 db 结果的最佳实践?说一个博客文章列表...对文章进行排序和分组?或对元素进行排序和分组?

Array
(
    [title] => Array
        (
            [0] => Untitled
            [1] => Untitled
        )

    [id] => Array
        (
            [0] => 8
            [1] => 11
        )

)

Array
(
    [0] => Array
        (
            ['id']=> 8
            ['title'] => Untitled
        )

    [1] => Array
        (
            ['id']=> 11
            ['title'] => Untitled
        )

)

第一种方法似乎是最简单的,也是我一直在做的。我可以简单地:

while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    $post['title'][] = $row['title'];
    $post['id'][] = $row['id'];
}

然后

$count = count($post['id']);

但第二种方式似乎更有意义,并且更符合逻辑地构建信息。在模板中设置、过滤和使用只是稍微复杂一些。

$c = 0;
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    $post[$c]['title'] = $row['title'];
    $post[$c]['id'] = $row['id'];
    $c++;
}

【问题讨论】:

    标签: php sql


    【解决方案1】:

    第二个更好,设置更简单:

    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $posts[] = $row;
    }
    
    // total number of posts
    $nrPosts = count($post);
    

    这将自动对数组进行数字索引,您无需将任何内容从 $row 复制到 $post,它会简单地复制整行。

    第二种结构更好:

    • 它将帖子的数据逻辑分组到一个结构中
    • 它不需要处理数据,只需要初始填充 $post-array
    • 您可以使用单个索引/索引范围轻松处理任意数量的博客文章

    【讨论】:

    • 感谢您解决这个问题。我希望大多数书都涵盖这些小事。
    【解决方案2】:

    在输出时创建看起来不正确的数据结构是没有用的。第二个数据集也更有用,这就是为什么它被用于像 Wordpress 这样的大型项目中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多