求教一个数组问题

图片描述图片描述

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

图片描述

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

阅读 1.6k
2 个回答

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

   $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:从数组中删除元素可能会有性能问题,可以单开两个数组储存

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题