PHP -我可以从一个特定的键移动数组


PHP - Can I shift an array from a specific key?

我在PHP中遇到了一点麻烦。

我有以下数组:

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
    [3] => kiwi
    [4] => cherry
    [5] => nuts
)

但是我想去掉'kiwi'并向上移动所有其他键,得到以下内容…

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
    [3] => cherry
    [4] => nuts
)

我相信这里有人知道如何完成,php的shift只需要第一个键,而不是特定的东西。

Thanks in advance

这就是array_splice为您做的。如果你愿意,它甚至允许你在那里插入新的条目。

在这种情况下使用:

array_splice($array, 3, 1);
$array = array("banana", "apple", "raspberry", "kiwi", "cherry", "nuts");
$key = array_search('kiwi', $array);
unset($array[$key]);
$array = array_values($array);
print_r($array);
Output:
Array ( [0] => banana [1] => apple [2] => raspberry [3] => cherry [4] => nuts ) 

AFAIK,没有任何内置函数来做到这一点,但您可以创建一个。你要做的是,删除一个特定的元素,然后重新计算键。

function a_shift($index, $array) {
     unset($array[$index));
     return array_values($array);
}

我用它从一个数组中删除键并复制到另一个数组:

$keys = [1, 3];
foreach ($keys as $index => $key) {
    if ($index != 0) {
        $key -= $index;
    }
    $newArr[] = array_splice($oldArr, $key, 1)[0];
}
return $newArr;