2013-02-26 250 views
0

我想在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); 
} 

但是,它并没有真正做我想做的......它一些奇怪的事情与阵列。你能帮忙吗?

+1

http://stackoverflow.com/questions/3797239/insert-new-item-in-array-on-any-position-in-php – mkaatman 2013-02-26 21:46:42

+4

下摆,其中的$阵列 – Sam 2013-02-26 21:46:53

+0

通'$ array'为一个函数参数。否则,你什么都不切。 'insertAfter($ newElement,$ key,$ array)' – 2013-02-26 21:47:51

回答

0

array_slice的第二个参数应该是数组中将要启动子数组的偏移量。如果您尝试将数组拆分为两部分,您希望第一个子数组的起始偏移量为0,大小为$index,第二个子数组的起始偏移量为$index+1,大小为sizeof(array) - index。重申一个评论,array_splice更适合您的应用程序。

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