1

问题很简单,假设我有一个像这样的数组:

$array = array(array('bla1' => 'bla1'), array('bla2' => 'bla2'),
    array('bla3' => 'bla3'), array('bla4' => 'bla4'));

是的,它是多维的,所以我需要在不擦除的情况下在例如array('bla1' => 'bla1')array('bla2' => 'bla2')之间设置值。

我很困惑地发现,通过php中的所有array_like函数如何做到这一点。

所以,就像任何其他程序员都会做的那样,我编写了这个函数:

function setArrVal($array, $key, $val) {
  for ($i = count($array) - 1; $i >= $key; $i--) {
    $array[$i + 1] = $array[$i];
  }
  $array[$key] = $val;    
  return $array;
}

效果很好。但是还是需要用php函数来做这个,有什么办法可以这样完成吗?我试过array_splice($input, 1, 0, $replacement); - 毫无价值,它只适用于简单的值,而不适用于数组中的数组。

4

1 回答 1

1

你可以array_splice()这样使用:

$array = array(array('bla1' => 'bla1'), array('bla2' => 'bla2'),
    array('bla3' => 'bla3'), array('bla4' => 'bla4'));

$insert = array(array('bla2.5' => 'bla2.5'));

// note the third argument argument is 0
// this will prevent it from overwriting existing values
array_splice($array, 2, 0, $insert ); 

print_r($array);

/* Result */
Array
(
    [0] => Array
        (
            [bla1] => bla1
        )

    [1] => Array
        (
            [bla2] => bla2
        )

    [2] => Array
        (
            [bla2.5] => bla2.5
        )

    [3] => Array
        (
            [bla3] => bla3
        )

    [4] => Array
        (
            [bla4] => bla4
        )

)

演示:http ://codepad.org/ivBmZRdn

这是你想要的吗?

于 2012-10-13T07:22:04.493 回答