大佬们 问个 PHP 动态修改多维数组的问题
$a=[1,2,3,4]
$b=[
1=>[]
2=>[]
3=>[]
4=>[]
]
我如何通过 a,b 给 4 里面加一个值 5,a 的个数可能会变 但是不会超过 b 不考虑 a 里面的超过了 b,反正就是动态的那种
嗯。。。没看明白,要不格式化一下,再把添加之后的数组写出来看看,
你这是从数据库里读出来要弄树形结构吧。分销用?
再说的详细点看
第一段我就没有看明白要干什么
“我如何通过 a,b 给 4 里面加一个值 5,”
对差不多 不过不是分销 就多层
额 就是 $a=[1,2,3] $b'1'['3']........ 不晓得能明白不
hash 表?
看不懂题目说什么,a 和 b 有啥关系。
$a=[1,2,3,4];
$b=[
1=>[]
2=>[]
3=>[]
4=>[]
];
$arr = &$b;
foreach($a as $v){
$arr = &$arr[$v];
}
$arr[$v+1]=[];
echo json_encode($b);
die;
这样?
简而言之,做不到。
你无法做到修改了一个数组后自动修改另外一个数组的值或结构(引用除外,但引用本质上两个数组或者数组的一部分得是相同的,不符合你这个场景)
但也许你可以写一个函数,输入是 a,输出是你想要的 b
数组访问 不是中括号嘛 二维数组 不是 2 个中括号嘛 现在我不清楚是几维 所以维度是动态的 那么我$b 后面跟的[]就是多个 假设键值都在$a=[1,2,3]这个数组里 这边 1 2 3 是键 那我就是想修改$b[1][2][3],如果$a=[1,2,3,4].那就是修改$b13 就这个意思吧 不晓得能不能
所以使用引用啊
因为 a 和 b 层级对应,那就是遍历 a 获取 b 下个层级引用。
好像有点懂了,现在已知$a=[1,2,3,4];
想通过 a 得到定位到数组 b 上$b13这个节点上,
如果 a 是[9,5,2,7]就表示想读写 b92, 是这样的吧,
你这里是把数组当链表用了,那么读取也得按链表来了,简单说就是循环,
那这 7 楼没毛病啊,
<?php
$a=[1,2,3,4];
$b=[ 1=>[ 2=>[ 3=>[ 4=>[] ] ] ] ];
$ret = &$b;
foreach($a as $v){
$ret = &$ret[$v];
}
$ret[5] = "hello";
print_r($b);
3v4l.org/TBLt5
是这样吗?
implode.io/y9evv9
思路:先按键名将数组倒序,利用 PHP 的 array_reduce 函数,每次回调都可以拿到上次回调回调所返回的值,每次回调利用上次的值创建新的数组,说人话就是每次回调都将上次的值于本次回调的值合并成一个数组并返回供下一个回调处理(好像有点拗口
取地址 修改
故事的起因:今天老妈来电话说手机丢了(华为手机),说手机解锁密码设置的很简单,同时她的某个理财产品密码和手机解锁密码一致,生怕偷手机的人把她钱的转移出去,吓得立马去营业厅补办手…
某人用Java搞了一个流体力学的演示。 http://grantkot.com/MPM/Liquid.html 不过,这仅仅是个开始。某同学将其发布上了reddit.com,…
经常在网上看到这种场景 一个网友说自己是程序员/网安之类的,然后晒出了桌面截图 评论区总有人根据桌面有个 360 浏览器,鉴定为脚本小子/小学生装逼/三流程序员 可是 360 …