douyi6922 2018-05-05 06:00
浏览 35

PHP在不同的密钥上推送相同的数据

I've data as follows

<?php
    $cart = array(
        'c' => array(
            array(
                'Cart' => array('course_type_quantity' => 3),
                'c' => array(
                    'id' => 2152,
                    'name' => 'Product1',
                    'duration' => 5,
                    'image' => 'IMG-2152.png',
                    'exams' => '606,652',
                    'exam' => 0
                )
            ),
            array(
                'Cart' => array('course_type_quantity' => 3),
                'c' => array(
                    'id' => 2152,
                    'name' => 'Product2',
                    'duration' => 5,
                    'image' => 'IMG-2153.png',
                    'exams' => '607,653',
                    'exam' => 0
                )
            )
        )
    );
?>

Now I want data from above array like:

<?php
    $exams => array(
        606 => 'Product1',
        652 => 'Product1',
        607 => 'Product2',
        653 => 'Product2',
    );
?>

My Code

foreach($data['c'] as $r){
    if($r['c']['exam']==0){
        $id = explode(',',$r['c']['exams']);
        for($i=0;$i<(count($id));$i++){
            $data['exams'][$id[$i]] = $r['c']['name'];
            $ids[] = $id[$i];
        }
    }
}

Which is working without any error...

But I don't want the nested loop. Because this is just a piece of code for this functionality, I've written before and after it.

Please suggest any short code for this...

Thanks

  • 写回答

1条回答 默认 最新

  • dongzai5181 2018-05-05 08:28
    关注

    You can use array_reduce to summarise your array. You can use array_combine and array_fill

    $cart = array(...); //Your array
    
    $exams = array_reduce($cart['c'], function($c, $v){
        $e = explode(',',$v['c']['exams']);
        return $c + array_combine($e,array_fill(0,count($e), $v['c']['name']));
    }, array());
    

    This will result:

    Array
    (
        [606] => Product1
        [652] => Product1
        [607] => Product2
        [653] => Product2
    )
    
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测