将元素插入数组中间

3

我希望在PHP中的非关联数组特定索引后插入新元素。目前我的做法如下:

public function insertAfter($newElement, $key)
{
    // Get index of given element
    $index = array_search($key, array_keys($array));

    $temp  = array_slice($array, $index + 1, null, TRUE);
    $temp2 = array_slice($array, sizeof($array) - $index, null, TRUE);

    // Insert new element into the array
    $array = array_merge($temp, array($newElement), $temp2);
}

然而,它并没有实现我想要的功能... 它对数组进行了一些奇怪的操作。你能帮忙吗?


2
https://dev59.com/b2865IYBdhLWcg3wd-ce - Matt
1
$array 作为函数参数传递。否则你什么也没有切片。insertAfter($newElement, $key, $array) - Samuel Cook
1
$array是一个属性,$this->array表示这个数组,抱歉我没写清楚,它就是一个带有一些内容的数组。 - khernik
1
你能发布 print_r($array) 的结果吗? - hek2mgl
2个回答

5
$array = array_slice($array, 0, $index) 
       + array($newElement)
       + array_slice($array, $index, count($array) - 1);

1
array_slice的第二个参数应该是数组中子数组开始的偏移量。如果您想将数组分成两个部分,您需要让第一个子数组从偏移量0开始,大小为$index,第二个子数组从偏移量$index+1开始,大小为sizeof(array) - index。再次强调一下,对于您的应用程序,最好使用array_splice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接