2010-09-26 110 views

回答

1

嘗試這種情況:

$x = array(1,2,3,4,5); 
$x = array_merge(array_slice($x, 0, 3), array(6), array_slice($x, 3)); 
print_r($x); 

輸出;

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 6 
    [4] => 4 
    [5] => 5 
) 
2
array_insert($array,$pos,$val); 

function array_insert($array,$pos,$val) 
{ 
    $array2 = array_splice($array,$pos); 
    $array[] = $val; 
    $array = array_merge($array,$array2); 

    return $array; 
} 
+0

'array_insert()'沒有在PHP中預定義。你需要自己創建它。 – BoltClock 2010-09-26 17:39:50

+0

抱歉,我剛剛意識到我編輯了答案。 – 2010-09-26 17:42:15

+0

這個答案是'array_insert()'的函數定義' – 2010-09-26 17:42:51

0

它可以做這樣的:

function array_insert_value(array $array = array(), $value = null, $position = null) 
{ 
    if(empty($position)) 
     return array_merge($array, array($value)); 
    else 
     return array_merge(
      array_slice($array, 0, $position), 
      array($value), 
      array_slice($array, $position) 
     );  
} 
1

使用array_splice($array, $pos, 0, array($val))

+0

'$ length'默認爲0;而這不符合OP的要求。這將用'$ val'替換'$ pos'中的元素,而不是在'$ pos'處插入。 – NullUserException 2010-09-26 17:48:40

+0

看看Example#2。 '$ length'爲0,雖然沒有記錄,但會導致插入。我也在參數列表中注意到了「= 0」,它必須是一個神器。 – aib 2010-09-26 17:53:24

+0

這正是KoolKabin所要求的,並不會取代任何元素。但是沒有必要將插入的值放入數組中。此外,這個問題對我來說似乎是一個9小時老問題的完全重複:http://stackoverflow.com/questions/3797239/php-array-insert-new-item-in-any-position/3797526#3797526 – GZipp 2010-09-26 19:15:34

0

我喜歡這個功能。我還包括我用於測試的代碼,我希望這有助於。

function chngNdx($array,$ndex,$val){ 
    $aCount = count($array); 

    for($x=($aCount)-1;$x>=$ndex;$x--){ 
     $array[($x+1)] = $array[$x]; 
    } 

    $array[$ndex] = $val; 

    return $array; 
} 

$aArray = array(); 
$aArray[0] = 1; 
$aArray[1] = 2; 
$aArray[2] = 3; 
$aArray[3] = 4; 
$aArray[4] = 5; 
$ndex = 3;  // # on the index to change 0-# 
$val = 6; 

print("before: ".print_r($aArray)."<br />"); 
$aArray = chngNdx($aArray,$ndex,$val); 
print("after: ".print_r($aArray)."<br />"); 
相關問題