Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
408 views
in Technique[技术] by (71.8m points)

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


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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

望采纳

$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));

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...