吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 772|回复: 6
收起左侧

[求助] php foreach 求助

[复制链接]
spacema 发表于 2021-11-18 13:55
我有一个二维数组 想要在遍历过程中如果符合某个条件则新增一个元素,同时对新增元素做修改。现在可以新增元素但没有办法对新增元素做修改。示例代码如下:
[PHP] 纯文本查看 复制代码
$a = array(
    [1,2,3],
    [2,3,4],
    [3,4,5]
);
$insert = array(4,5,6);

foreach ($a as &$item){
    if(in_array("5",$item)){
        $a[] = $insert;
        $item[0] = 7;
    }
}
unset($item);

var_dump($a);

想要的结果:
[PHP] 纯文本查看 复制代码
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

实际得到的结果:
[PHP] 纯文本查看 复制代码
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[0] = 7;这个元素不是$a[2]里面的吗?你要改的好像是新增的这个$a[3]
shgdym 发表于 2021-11-18 16:03
[PHP] 纯文本查看 复制代码
$a = array(
	[1,2,3],
	[2,3,4],
	[3,4,5]
);
$insert = array(4,5,6);
if(in_array("5", $insert)){
	$insert[0] = 7;
}
foreach ($a as &$item){
	if(in_array("5",$item)){
		$a[] = $insert;
		$item[0] = 7;
	}
}
unset($item);
var_dump($a);
exit();
蒋德盼 发表于 2021-11-18 16:27
本帖最后由 蒋德盼 于 2021-11-18 17:03 编辑

[PHP] 纯文本查看 复制代码
 $a = array(
        [1,2,3],
        [2,3,4],
        [3,4,5]
    );
    $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[0] != 7)){
                if ($insert)$arr[] = $insert;
                $arr[$key][0] = 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
[PHP] 纯文本查看 复制代码
$a = array(
    [1,2,3],
    [2,3,4],
    [3,4,5]
);
$insert = array(4,5,6);
 
$a[] = $insert;
foreach ($a as &$item){
    if(in_array("5",$item)){
        $item[0] = 7;
    }
}
unset($item);
var_dump($a);


提前追加一下赋值不就好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表