【发布时间】:2011-01-10 02:28:57
【问题描述】:
假设我有这个数组:
$array = array('a'=>1,'z'=>2,'d'=>4);
稍后在脚本中,我想在'z' 之前添加值'c'=>3。我该怎么做?
是的,顺序很重要。当我通过数组运行 foreach() 时,我不希望将这个新添加的值添加到数组的末尾。我从 mysql_fetch_assoc() 获取这个数组
我上面使用的键是占位符。使用 ksort() 不会达到我想要的效果。
http://www.php.net/manual/en/function.array-splice.php#88896 完成了我正在寻找的东西,但我正在寻找更简单的东西。
获取一个包含大约 30 列的示例 db 表。我使用 mysql_fetch_assoc() 获取这些数据。在这个新数组中,在“pizza”和“drink”列之后,我想添加一个新列“full_dinner”,它结合了“pizza”和“drink”的值,这样当我在所述数组上运行 foreach() 时, 'full_dinner' 直接出现在 'drink' 之后
【问题讨论】:
-
我没有对你投反对票。我相信我的 uasort 答案应该对您的目的有所帮助。
-
有什么比
array_splice更容易插入值?我认为从一开始就明确定义您打算做什么很重要。 -
我想说,如果您对这个数组的顺序很挑剔,那么您的设计就会有些异味。你能告诉我们为什么你需要它们,更详细地了解数组实际包含的内容吗?也许那时我们可以提出替代设计来完全避免这个问题。
-
@spoulson 打败了我 - @Citizen,如果可以的话,请给我们一个真实的例子,说明您如何设想之后使用数据,以及为什么保留订单很重要。如果我们只了解了一半,那就很难回答了:-)
-
我也不喜欢有人因为不知道答案而对问题投反对票。关于我发现php.net/manual/en/class.arrayiterator.php 很有用的问题,但似乎没有办法使用迭代器来完成这个特定任务。
标签: php arrays associative-array