foreach 是不是保证在 php 中以数组顺序进行迭代?
Posted
技术标签:
【中文标题】foreach 是不是保证在 php 中以数组顺序进行迭代?【英文标题】:Is foreach guaranteed to iterate in the array order in php?foreach 是否保证在 php 中以数组顺序进行迭代? 【发布时间】:2011-06-11 14:47:47 【问题描述】:当一个数组被传递给foreach
时,输出顺序是否保证与输入相同?我知道在某些语言中,不能保证输出顺序,因为每个元素都是同时处理的。
例如,我将一个排序数组传递给foreach
以写入文件。我想确保该数组将在输出文件中排序。
【问题讨论】:
(参考) php.net/manual/en/control-structures.foreach.php 上面的答案,但是如果您需要在执行 foreach 循环之前对数组进行排序,请查看 array_multisort():php.net/manual/en/function.array-multisort.php 在阅读 phpforeach
doc 后,我带着同样的问题来到这里。它没有明确说明订单将保持不变。我不是在谈论示例,也不是 cmets。唯一的参考是reset()
谈论当前元素和下一个元素。
我也没有。我刚刚查看了所谓的“参考”,并没有看到任何说明 PHP 根据规范保留关联数组的输入顺序的内容。除非有另一个更有意义的参考,否则这个问题仍然没有答案(正式地说),它可能同样取决于实现或版本。
我真的希望你在你的问题中给出了一个代码示例。
【参考方案1】:
是的......无论你给 foreach 什么命令,它都会以相同的顺序迭代。在你的情况下array will be sorted in the output file.
【讨论】:
【参考方案2】:相关引用可能不是foreach
的引用或前面提到的排序,而是数组的引用。
Language reference — Arrays 说:
PHP 中的数组实际上是一个有序映射。
【讨论】:
【参考方案3】:这是正确的,foreach
将按照与输入数组相同的顺序输出。
【讨论】:
【参考方案4】:是的 - 项目将按照它们在数组中的顺序输出。
【讨论】:
以上是关于foreach 是不是保证在 php 中以数组顺序进行迭代?的主要内容,如果未能解决你的问题,请参考以下文章
比较数组数组中的 ID,并在 PHP 中以 desc 顺序仅取一行与日期