欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

求教一个数组问题

程序员文章站 2022-03-17 13:37:27
...

求教一个数组问题求教一个数组问题

我现在有上面的一个数组数据,想改成下面这样,可以改吗?

求教一个数组问题

主要就是想把两个数组中相同的地方合并在一起,然后将不一样的地方,再重新开个数组存起来

回复内容:

求教一个数组问题求教一个数组问题

我现在有上面的一个数组数据,想改成下面这样,可以改吗?

求教一个数组问题

主要就是想把两个数组中相同的地方合并在一起,然后将不一样的地方,再重新开个数组存起来

你这边应该是要一些特定字段重复取出来用吧,而不是重复的就要可以试试下面这语句

   $simiArray = [];
    foreach($resourceArray as $rVal) {
        $order_sn = $rVal['order_sn'];
        $simiArray[$rVal['order_sn']]['order_sn'] = $rVal['order_sn'];
        $simiArray[$order_sn]['order_add_time'] = $rVal['order_add_time'];
        $simiArray[$rVal['order_sn']]['pay_amonut'] = $rVal['pay_amonut'];
        unset($rVal['order_sn']);
        unset($rVal['order_add_time']);
        unset($rVal['pay_amonut']);
        $simiArray[$order_sn]['order_detail'][] = $rVal;
    }

可以实现,不过标准库里应该是没有这种功能的函数的,要自己写。

现在不方便写代码,就先给个思路吧:

输入两个数组的情况下,遍历第一个数组,如果两个数组当前 key 的 value 一样,那就把这个值 push 到一个新数组里,并且从输入的两个数组中删除这个键值。如果两个数组中的值不一样就不用管。

这样处理完后我们可以得到一个储存有两个数组之间相同键值对的数组,以及两个仅储存不同的内容的数组(因为相同的在上面被删掉了),最后之要把后两个数组 push 进第一个数组即可。

PS:从数组中删除元素可能会有性能问题,可以单开两个数组储存

相关标签: php