用于维护键的array_shift()的替代函数 - PHP

时间:2014-11-16 18:50:44

标签: php arrays key shift

我是新用户,所以我希望我的问题能够尊重网站的网络礼节。

我正在处理一个我需要操纵维护密钥的数组。遗憾的是,我需要实现的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,则将元素本身插入数组的最后位置,始终保持其键。

1 个答案:

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

试试这个 - 对我有用。