我有一个看起来像这样的数组:
'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。有什么建议吗?
答案 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库通常 都保持插入顺序)。假设已经可能正在摔倒。