我有一个PHP数组,其中包含literal_key =>值。我需要将键和值从数组的开头移开并将其粘贴在最后(同时保持键)。
我试过了:
$f = array_shift($fields);
array_push($fields, $f);
但这会失去关键价值。 例如:
$fields = array ("hey" => "there", "how are" => "you");
//在上面运行
这会产生:
$fields = array ("how are" => "you", "0" => "there");
(我需要保持“嘿”而没有0)任何想法?
答案 0 :(得分:4)
据我所知,您无法使用array_push()
向数组添加关联值,也无法使用array_shift()
获取密钥。 (同样适用于pop/push
)。快速破解可能是:
$fields = array( "key0" => "value0", "key1" => "value1");
//Get the first key
reset($fields);
$first_key = key($fields);
$first_value = $fields[$first_key];
unset($fields[$first_key]);
$fields[$first_key] = $first_value;
看到它的工作here。一些源代码取自https://stackoverflow.com/a/1028677/1216976
答案 1 :(得分:2)
您可以使用$key
获取第0个密钥array_keys
,然后使用$value
设置array_shift
,然后设置$fields[$key] = $value
。
或者你可以做一些喜欢
的事情array_merge( array_slice($fields, 1, NULL, true),
array_slice($fields, 0, 1, true) );
未经测试但有正确的想法。