将第一个值和键移到数组的末尾

时间:2019-01-20 17:23:24

标签: php arrays sorting

我有一个看起来像这样的数组:

'array_1' => [
                'A' => 'A', 'B' => 'B', 'C' => 'C',
             ],

我需要将第一个值和键移到数组的末尾,所以它应该像这样:

'array_1' => [
                'B' => 'B', 'C' => 'C', 'A' => 'A',
             ],

我试图这样做:

array_push($arr, array_shift($arr));

但是结果是这样的:

'array_1' => [
                'B' => 'B', 'C' => 'C', '0' => 'A',
             ],

值A的键更改为0,但我仍需要将其保持为A。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

array_push不允许您输入密钥

因此您必须使用 $arr['key'] = value


首先,执行reset(array)。这会将内部指针重置为指向第一个元素
这样,当您使用key($ arr)时,它将返回第一个密钥。

然后使用array_shift()获取数组中的第一个值

代码:

reset($arr) $arr[key($arr)] = array_shift($arr);

答案 1 :(得分:0)

  

array_push($ arr,array_shift($ arr));

这将删除$ arr的第一个 VALUE ,然后将其作为值添加到数组的末尾,因此使用数字键。由于没有现存的数字键,因此将其分配为键0。因此,您得到的结果。

您需要提取第一对,然后推动它:

reset($arr);
list($k, $v) = each($arr);
array_shift($arr);
$arr[$k] = $v;

这就是说...如果您依赖于非数字键 order (或混合数字/非数字键),那么我担心您的设计可能有缺陷。

键对数组(字典,有时甚至是 hash map )在大多数语言中甚至没有几种表示形式(大多数值得注意的是JSON-即使大多数JSON库通常 都保持插入顺序)。假设已经可能正在摔倒。