php foreach 求助
我有一个二维数组 想要在遍历过程中如果符合某个条件则新增一个元素,同时对新增元素做修改。现在可以新增元素但没有办法对新增元素做修改。示例代码如下:$a = array(,
,
);
$insert = array(4,5,6);
foreach ($a as &$item){
if(in_array("5",$item)){
$a[] = $insert;
$item = 7;
}
}
unset($item);
var_dump($a);
想要的结果:array (size=4)
0 =>
array (size=3)
0 => int 1
1 => int 2
2 => int 3
1 =>
array (size=3)
0 => int 2
1 => int 3
2 => int 4
2 =>
array (size=3)
0 => int 7
1 => int 4
2 => int 5
3 =>
array (size=3)
0 => int 7
1 => int 5
2 => int 6
实际得到的结果:array (size=4)
0 =>
array (size=3)
0 => int 1
1 => int 2
2 => int 3
1 =>
array (size=3)
0 => int 2
1 => int 3
2 => int 4
2 =>
array (size=3)
0 => int 7
1 => int 4
2 => int 5
3 =>
array (size=3)
0 => int 4
1 => int 5
2 => int 6
我要如何修改才能得到我想要的结果呢? $item = 7;这个元素不是$a里面的吗?你要改的好像是新增的这个$a $a = array(
,
,
);
$insert = array(4,5,6);
if(in_array("5", $insert)){
$insert = 7;
}
foreach ($a as &$item){
if(in_array("5",$item)){
$a[] = $insert;
$item = 7;
}
}
unset($item);
var_dump($a);
exit(); 本帖最后由 蒋德盼 于 2021-11-18 17:03 编辑
$a = array(
,
,
);
$insert = array(4,5,6);
$b = a($a,$insert);
var_dump($b);
function a(&$arr,$insert = []){
foreach ($arr as $key => $item){
if ((in_array(5,$item)) && ($item != 7)){
if ($insert)$arr[] = $insert;
$arr[$key] = 7;
a($arr);
}
}
return $arr;
} 你新增的这个$insert = array(4,5,6);里面有5,循环里又判断存在5又新增,这不是无限循环了吗 提前判断一遍 $a = array(
,
,
);
$insert = array(4,5,6);
$a[] = $insert;
foreach ($a as &$item){
if(in_array("5",$item)){
$item = 7;
}
}
unset($item);
var_dump($a);
提前追加一下赋值不就好了
页:
[1]