3

我有一个具有 literal_key => 值的 PHP 数组。我需要将键和值从数组的开头移开并将其粘贴在末尾(也保留键)。

我试过了:

$f = array_shift($fields);
array_push($fields, $f);

但这失去了关键价值。前任:

$fields = array ("hey" => "there", "how are" => "you");

// 在上面运行

这产生:

$fields = array ("how are" => "you", "0" => "there");

(我需要保持“嘿”而不是0)有什么想法吗?

4

2 回答 2

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;

看到它在这里工作。一些源代码取自https://stackoverflow.com/a/1028677/1216976

于 2012-08-05T16:43:47.167 回答
2

您可以使用第 0 个键,然后设置$key使用,然后设置。array_keys$valuearray_shift$fields[$key] = $value

或者你可以做一些花哨的事情,比如

array_merge( array_slice($fields, 1, NULL, true),
             array_slice($fields, 0, 1, true)     );

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

于 2012-08-05T16:42:46.010 回答