spacema 发表于 2021-11-18 13:55

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
我要如何修改才能得到我想要的结果呢?

huanwuying 发表于 2021-11-18 15:48

$item = 7;这个元素不是$a里面的吗?你要改的好像是新增的这个$a

shgdym 发表于 2021-11-18 16:03

$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 16:27

本帖最后由 蒋德盼 于 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;
    }

mingxingHS 发表于 2021-11-18 16:30

你新增的这个$insert = array(4,5,6);里面有5,循环里又判断存在5又新增,这不是无限循环了吗

lsjaiwan 发表于 2021-11-18 18:04

提前判断一遍

小迷糊 发表于 2021-11-26 15:39

$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]
查看完整版本: php foreach 求助