php - 求教一个数组问题
PHP中文网
PHP中文网 2017-04-11 10:29:16
[PHP讨论组]

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

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

PHP中文网
PHP中文网

认证0级讲师

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号