PHP数组,重复循环的问题,被循环弄搞晕了,多次循环太难了

自己写了几次都不行。
上代码

<?php
$ceshi='优酷视频$$第1集$这是优酷播放地址一$youku#第2集$这是优酷播放地址二$youku#第3集$这是优酷播放地址三$youku$$$芒果视频$$第1集$这是芒果播放地址一$mgtv#第2集$这是芒果播放地址二$mgtv#第3集$这是芒果播放地址三$mgtv';

$sorts = explode('$$$', $ceshi);
        foreach($sorts as $keys=>$value){  //循环播放源


      
         $params = explode("$$", $value);
         $fenji['picimg'] ="pic";

         $dongle = explode("#", $params[1]);
       


        foreach($dongle as $key=>$aaa){ //循环播放集数
      

        $zuihoufen['ji'] = '1';
        $zuihoufen['addrUrl'] = $aaa;
        $fenji['addrarr'][] = $zuihoufen;
       
        } 
       
        $ziyuanxuanze['addr'][] = $fenji;
       

}

echo str_replace("\\/", "/", json_encode($ziyuanxuanze, JSON_UNESCAPED_UNICODE));

这个输出的结果是:
`{

"addr": [
    {
        "picimg": "pic",
        "addrarr": [
            {
                "ji": "1",
                "addrUrl": "第1集$这是优酷播放地址一$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第2集$这是优酷播放地址二$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第3集$这是优酷播放地址三$youku"
            }
        ]
    },
    {
        "picimg": "pic",
        "addrarr": [
            {
                "ji": "1",
                "addrUrl": "第1集$这是优酷播放地址一$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第2集$这是优酷播放地址二$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第3集$这是优酷播放地址三$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第1集$这是芒果播放地址一$mgtv"
            },
            {
                "ji": "1",
                "addrUrl": "第2集$这是芒果播放地址二$mgtv"
            },
            {
                "ji": "1",
                "addrUrl": "第3集$这是芒果播放地址三$mgtv"
            }
        ]
    }
]

}`

后面第二个播放源的数组里的播放集数变成6组了,第一组是3个,第二组就循环成了6个,估计有第三组的话就变成9个了。。这怎么控制?我怎么做都不能减去。。
我想得到的格式为:
`{

"addr": [
    {
        "picimg": "pic",
        "addrarr": [
            {
                "ji": "1",
                "addrUrl": "第1集$这是优酷播放地址一$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第2集$这是优酷播放地址二$youku"
            },
            {
                "ji": "1",
                "addrUrl": "第3集$这是优酷播放地址三$youku"
            }
        ]
    },
    {
        "picimg": "pic",
        "addrarr": [
            {
                "ji": "1",
                "addrUrl": "第1集$这是芒果播放地址一$mgtv"
            },
            {
                "ji": "1",
                "addrUrl": "第2集$这是芒果播放地址二$mgtv"
            },
            {
                "ji": "1",
                "addrUrl": "第3集$这是芒果播放地址三$mgtv"
            }
        ]
    }
]

}`

这是一个播放器
addr 是播放源通过$$$分割,这个有可能是1个有可能以后是10个。所以循环一次得到所有的播放源。
addrarr 是一个播放器里有多少集,通过#号分割。


搞了一天到现在都没搞明白。。为什么循环会这样!希望高手指点下谢谢!!万分感谢!好人平安!

阅读 2.7k
1 个回答

望采纳

$ceshi = '优酷视频$$第1集$这是优酷播放地址一$youku#第2集$这是优酷播放地址二$youku#第3集$这是优酷播放地址三$youku$$$芒果视频$$第1集$这是芒果播放地址一$mgtv#第2集$这是芒果播放地址二$mgtv#第3集$这是芒果播放地址三$mgtv';

$cur1 = explode('$$$', $ceshi);

$cur2 = [];
foreach ($cur1 as $cur) {
    $cur2[]['addrarr'] = explode('#', end(explode('$$', $cur)));
}

$it = [];
$t = [];
foreach ($cur2 as $key => $item) {
    $cur2[$key]['picimg'] = 'pic';
    foreach ($cur2[$key]['addrarr'] as $key2 => $i) {
        $it['ji'] = 1;
        $it['addrUrl'] = $i;

        $cur2[$key]['addrarr'][$key2] =$it;
    }
}

$arr['addr'] = $cur2;
print_r(json_encode($arr));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题