PHP在数组中插入值(字母键)


PHP Insert value in Array (alphabet key)

我有数组

array (
   a =>  "1",
   b =>  "2",
   c =>  "3"
 )

如果我在"b"处插入"4"。位置b处的旧值移动到位置"c"。并且位置c处的旧值被移动到位置"d"。

注意插入值时自动创建位置"d"。如果数组中的键是a、b、c、d、e、f、g,当在数组中插入值时,它会自动创建位置"h"

所以结果是:

array (
   a =>  "1",
   b =>  "4",
   c =>  "2",
   d =>  "3"
 )

我该怎么办?或者有一些建议

这里是使用array_keysarray_searcharray_slice函数的addToStack函数:

$arr = array(
    'a' =>  "1",
    'b' =>  "2",
    'c' =>  "3"
);
/**
 * Inserts a new element to stack with offset
 * @param $arr the initial array passed by reference
 * @param $pos string key (position)
 * @param $value inserted value
*/
function addToStack(&$arr, $pos, $value) {
    $keys = array_keys($arr);
    $offset = array_search($pos, $keys);
    $rest = array_slice($arr, $offset);
    $arr[$pos] = $value;
    foreach ($rest as $v) {
        $arr[++$pos] = $v;
    }
}
addToStack($arr, 'b', '4');
print_r($arr);

输出:

Array
(
    [a] => 1
    [b] => 4
    [c] => 2
    [d] => 3
)

这个技巧可能会对您有所帮助。

首先,您需要使用arraykeyvalue来调用函数。在函数中,首先检查键是否存在。如果键存在,则存储值,现在用键和值在数组中设置值,使用end函数找到最后一个键,然后用一增加值以获得下一个字符,如果键不存在,则在不存储值的情况下也一样。

$arr = array (
   'a' =>  "1",
   'b' =>  "2",
   'c' =>  "3"
 );
function array_push_user($arr, $key, $val){
    $store = '';
    $bk = '';
    if(array_key_exists($key, $arr)){
        foreach($arr as $keys => $vals){
            if($keys == $key){
                $store = $val;
                $bk = $vals;
                $lst = $keys;
            }else{
                if($bk != ""){
                    $store = $bk;
                    $bk = $vals;
                }
                else
                    $store = $vals;
                $lst = $keys;
            }
            $arr[$lst] = $store;
        }
        $arr[chr(ord($lst)+1)] = $bk;
    }else{
        end($arr);
        $lst = key($arr);
        $arr[chr(ord($lst)+1)] = $val;
    }   
    return $arr;
}

$ret_arr = array_push_user($arr, 'b', '4');
echo '<pre>';
print_r($ret_arr);

结果

Array
(
    [a] => 1
    [b] => 4
    [c] => 2
    [d] => 3
)