2013-02-26 291 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);