【问题标题】:PHP foreach loop takes array elements out of numeric order?PHP foreach 循环将数组元素从数字顺序中取出?
【发布时间】:2011-09-30 16:18:51
【问题描述】:

我有一个像这样构建的数组:

foreach($items as $item) {
    $this->_array[(int)$item->getPosition()] = $item;
}

当我运行该数组以输出它时,我希望这样:

array (
    [0] => item0,
    [1] => item1,
    [2] => item2,
    [3] => item3,
)

但我明白了:

array (
    [3] => item3,
    [0] => item0,
    [2] => item2,
    [1] => item1,
)

我只能假设键的设置顺序。为什么它们不按顺序出来?

有没有办法强制数组按数字顺序按键排序?

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    ksort()数组。

    【讨论】:

    • 正是我需要的,谢谢。当我浏览文档时错过了它。
    【解决方案2】:

    我敢打赌,密钥 ($item->getPosition()) 是从不遵守其顺序的数据库中读取的。这不是foreach 的问题。

    1. 读取数据
    2. 对数组进行排序
    3. 输出

    【讨论】:

      【解决方案3】:

      我同意加里的观点。

      但您也可以尝试在数据库查询中对其进行排序。假设它是一个 MySQL 数据库:

      "SELECT * FROM `table` WHERE `column` = 'value' ORDER BY `position` ASC"
      

      这会在它们到达 foreach 语句之前对它们进行排序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-11
        • 2013-10-23
        • 2011-02-20
        • 2016-06-18
        • 2012-02-15
        • 2014-05-04
        • 2011-03-07
        相关资源
        最近更新 更多