PHP从开始到结束时获取数组键和值

时间:2012-08-05 16:30:41

标签: php arrays

我有一个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)任何想法?

2 个答案:

答案 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)     );

未经测试但有正确的想法。