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

发布于 2022-09-12 03:30:58 字数 2976 浏览 37 评论 0

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

<?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 是一个播放器里有多少集,通过#号分割。


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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

似最初 2022-09-19 03:30:58

望采纳

$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));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文