这是我的示例数组
$inputs = array();
array(4) {
[0]=>
array(2) {
["id"]=>
string(1) "1"
["name"]=>
string(4) "13.1"
}
[1]=>
array(2) {
["id"]=>
string(1) "2"
["name"]=>
string(4) "13.2"
}
[2]=>
array(2) {
["id"]=>
string(1) "3"
["name"]=>
string(4) "14.1"
}
[3]=>
array(2) {
["id"]=>
string(1) "4"
["name"]=>
string(4) "14.2"
}
}
在我的foreach循环期间,我当前正在使用$inputs[2]
,并且条件逻辑将确定在此之上需要添加新数组。请看下一个例子..
array(4) {
[0]=>
array(2) {
["id"]=>
string(1) "1"
["name"]=>
string(4) "13.1"
}
[1]=>
array(2) {
["id"]=>
string(1) "2"
["name"]=>
string(4) "13.2"
}
[2]=>
array(2) {
["id"]=>
string(1) "NEW"
["name"]=>
string(4) "NEW"
}
[3]=>
array(2) {
["id"]=>
string(1) "3"
["name"]=>
string(4) "14.1"
}
[4]=>
array(2) {
["id"]=>
string(1) "4"
["name"]=>
string(4) "14.2"
}
}
我该怎么做?
感谢您提前的帮助
答案 0 :(得分:4)
您可以使用array_splice
执行此操作:
$inputs = ... your original array;
$newElement = array(array('id' => 'NEW', 'name' => 'NEW'));
array_splice($inputs, 2, 0, $newElement);
var_dump($inputs); // your desired array :)
编辑:修复$newElement
初始化,它必须是一个包含新元素的数组,因此它必须是一个包含所需新元素的数组,一个新数组。
答案 1 :(得分:1)
您可以在simple for for
中使用array_splicefor ($i = 0; $i < count($array); ++$i) {
if (/* condition is true */) {
array_splice($array, $i, 0, /* your new array */);
++$i;
}
}
答案 2 :(得分:0)
您需要构建新的array
试
$array = array(
0 => array("id" => "1","name" => "13.1"),
1 => array("id" => "2","name" => "13.2"),
2 => array("id" => "3","name" => "14.1"),
3 => array("id" => "4","name" => "14.2"));
$append = array("id" => "new","name" => "new");
$copy = array();
$id = 2 ; // add after this ID
foreach($array as $value)
{
$copy[] = $value ;
$id == $value['id'] AND $copy[] = $append ;
}
var_dump($copy);
输出
array
0 =>
array
'id' => string '1' (length=1)
'name' => string '13.1' (length=4)
1 =>
array
'id' => string '2' (length=1)
'name' => string '13.2' (length=4)
2 =>
array
'id' => string 'new' (length=3)
'name' => string 'new' (length=3)
3 =>
array
'id' => string '3' (length=1)
'name' => string '14.1' (length=4)
4 =>
array
'id' => string '4' (length=1)
'name' => string '14.2' (length=4)
答案 3 :(得分:0)
您可以使用功能:
function insertIn($array, $position, $element)
{
$output = array();
for($i=0;$i<$position;$i++)
{
$output[$i] = $array[$i];
}
$output[$position] = $element;
for($i=$position+1;$i<count($array)+1;$i++)
{
$output[$i] = $array[$i-1];
}
return $output;
}
答案 4 :(得分:0)
我想是这样的:
$new_array= array_merge( array_slice($array, 0, $pos), array(($pos+1)=>$value), array_slice($array, $pos, count($array)-$pos) );
那里可能有一个错误,但你明白了......