【发布时间】:2016-08-21 22:25:25
【问题描述】:
假设我有这个关联数组:
$fruits = array(
'red' => 'strawberry',
'blue' => 'banana',
'green' => 'apple',
);
我想将密钥blue 更改为yellow。请注意,我想更改 key,而不是值。我可以这样做:
$fruits['yellow'] = $fruits['blue'];
unset($fruits['blue']);
但这会导致'yellow' => 'banana' 位于数组的end。如果我需要维护数组的顺序,所以'yellow' => 'banana' 与之前的'blue' => 'banana' 处于相同位置,我该怎么做?
当然,我可以重构整个数组,添加所有键/值对并插入 yellow 而不是 blue 键,但这似乎是一种相当缓慢的方式。
是否有更智能/更高效(最好是 PHP 原生)的方法来就地执行此操作?
【问题讨论】:
-
其实,你所拥有的是正确的。这里没有顺序。这没有任何区别。为什么需要特定的订购?那么你可以使用数字索引对吗?
-
你必须先了解php中的数组是如何工作的......php.net/manual/en/language.types.array.php
-
@PraveenKumar 除非我弄错了,PHP 数组是有序的吗? (也根据@GeorgePant 的链接?)如果我这样做
implode(' ',$fruits),我总是得到相同的结果,即"strawberry banana apple"按此顺序。 -
@RocketNuts 在拒绝正确答案之前,您应该了解 php 数组的工作原理,因为它不是“智能”/“高效”。如果您了解在 php 中关联数组的顺序只是元素的顺序插入到数组中,那么你就会明白最有效和最聪明的方法是重建数组。
-
@GeorgePant Ehm,我还没有拒绝任何答案?我只对 cpugorou 的回答发表了评论,询问他的回答比我在我的 OP 中已经提出的建议提供了什么。此外,我已经提到我当然可以手动重建数组,我只是想知道 PHP 中是否有一些本机函数或运算符可以做同样的事情。您显然可以就地更改数组中的 values,而我的问题很简单,keys 是否也可以这样做。
标签: php replace key associative-array in-place