我是新用户,所以我希望我的问题能够尊重网站的网络礼节。
我正在处理一个我需要操纵维护密钥的数组。遗憾的是,我需要实现的array_shift()函数不维护数组的已处理对象的键。请参阅下面的示例代码:
$rotor = array ("A" => "R", "B" => "D", "C" => "O", "D" => "B");
$position = "C";
foreach ($rotor as $key => $value) {
if($key != $position) {
$temp = array_shift($rotor);
array_push($rotor, $temp);
} else {
break;
}
}
var_dump($rotor);
/*Result
array(4) {
["C"]=>
string(1) "O"
["D"]=>
string(1) "B"
[0]=>
string(1) "R"
[1]=>
string(1) "D"
}*/
如您所见,R和D元素的键不是原始键。您建议使用哪种替代解决方案来提取数组的第一个元素,保持密钥不变?
感谢。
PS:我的目标是提取数组的第一个元素(保持键),如果它不等于变量$ position,则将元素本身插入数组的最后位置,始终保持其键。
答案 0 :(得分:1)
$rotor = array ("A" => "R", "B" => "D", "C" => "O", "D" => "B");
$position = "C";
foreach ($rotor as $key => $value) {
if($key != $position) {
array_shift($rotor);
$rotor += array($key=>$value);
} else {
break;
}
}
试试这个 - 对我有用。