2010-09-26 117 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 />"); 
相关问题