php - Combining json output from multiple foreach loop -


i have php script returns video streams output. output contains multiple unique streams.

i trying encode output json because of multiple foreach loop not giving proper output

code :

<?php  if (isset($_get["id"]))     $id = $_get["id"]; $temp = explode("=",$id); $link=end($temp);  parse_str(file_get_contents('http://www.youtube.com/get_video_info?video_id='.$link), $video_data); $streams = $video_data['url_encoded_fmt_stream_map']; $streams = explode(',',$streams);  $arr = array();   foreach ($streams $streamdata) {     parse_str($streamdata,$streamdata);     foreach ($streamdata $key => $value) {         $myobj->$key = $value;     }     $arr = $myobj; }  echo json_encode(array("streams"=>$arr)); ?> 

above code return last stream/item output.

output :

{    "streams":{       "quality":"small",       "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",       "itag":"17",       "url":"video_link"     } } 

if put echo json_encode(array("streams"=>$arr)); inside upper foreach loop. return streams multiple root nodes, , not acceptable. need 1 root node contains steams.

output :

{      "streams":{       "type":"video\/mp4; codecs=\"avc1.64001f, mp4a.40.2\"",       "itag":"22",       "url":"video_link",       "quality":"hd720"     }     }{     "streams":{       "type":"video\/webm; codecs=\"vp8.0, vorbis\"",       "itag":"43",       "url":"video_link",       "quality":"medium"     }     }{     "streams":{       "type":"video\/mp4; codecs=\"avc1.42001e, mp4a.40.2\"",       "itag":"18",       "url":"video_link",       "quality":"medium"     }     }{     "streams":{       "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",       "itag":"36",       "url":"video_link",       "quality":"small"     }     }{     "streams":{       "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",       "itag":"17",       "url":"video_link",       "quality":"small"     } } 

desired output :

{   "streams":[   {      "quality":"hd720",      "itag":"44",      "url":"video_link",      "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\""   },   {      "quality":"medium",      "itag":"",      "url":"video_link",      "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\""   },   {      "quality":"medium",      "itag":"17",      "url":"video_link",      "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\""   },   {      "quality":"medium",      "itag":"17",      "url":"video_link",      "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\""   },   {      "quality":"small",      "itag":"17",      "url":"video_link",      "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\""   },   {      "quality":"small",      "itag":"17",      "url":"video_link",      "type":"video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\""   }   ]   } 

is there way combing multiple root nodes or json output streams.

note :

  • outer foreach loop iterates 5 times in script lifetime
  • inner foreach loop iterates 4 times per each outer foreach loop in script lifetime

please me new php. tia !!!

tested , got output.

<?php if (isset($_get["id"]))     $id = $_get["id"]; $temp = explode("=",$id); $link=end($temp);  parse_str(file_get_contents('http://www.youtube.com/get_video_info?video_id='.$link), $video_data); $streams = $video_data['url_encoded_fmt_stream_map']; $streams = explode(',',$streams);  $arr = array();   foreach ($streams $streamdata) {     parse_str($streamdata,$streamdata);     $myobj = new stdclass();     foreach ($streamdata $key => $value) {         $myobj->$key = $value;     }     array_push($arr, $myobj); }   print_r (json_encode(array("streams"=>$arr))); ?> 

output:

{     "streams": [{             "itag": "22",             "url": "https:\/\/r5---sn-q4fl6nlz.googlevideo.com\/videoplayback?expire=1503278582&mm=31&mv=m&pl=14&mt=1503256900&ms=au&ei=lugzwy6ycc-i-wok15ggaq&signature=703194a7aaf91601c8b1a3d674cdee89d9b7f7d4.489762a45fa4a3a72d00974427199fcff1538cf9&source=youtube&beids=%5b9466594%5d&mn=sn-q4fl6nlz&requiressl=yes&mime=video%2fmp4&ipbits=0&initcwndbps=997500&pcm2=yes&lmt=1502949906234234&dur=250.938&itag=22&ip=172.251.185.232&sparams=dur%2cei%2cid%2cinitcwndbps%2cip%2cipbits%2citag%2clmt%2cmime%2cmm%2cmn%2cms%2cmv%2cpcm2%2cpl%2cratebypass%2crequiressl%2csource%2cexpire&ratebypass=yes&id=o-aio4capppe9wpzwlmohlf16f8ylqoykrkwh0steoswbh&key=yt6",             "type": "video\/mp4; codecs=\"avc1.64001f, mp4a.40.2\"",             "quality": "hd720"         }, {             "itag": "43",             "url": "https:\/\/r5---sn-q4fl6nlz.googlevideo.com\/videoplayback?expire=1503278582&mm=31&mv=m&pl=14&mt=1503256900&ms=au&ei=lugzwy6ycc-i-wok15ggaq&signature=4333d8109a90b3dc6844c6a6930a8558eccc2a05.b736a90e09e2a47a4b3e1630cdd260099a15e17c&source=youtube&beids=%5b9466594%5d&mn=sn-q4fl6nlz&requiressl=yes&clen=25853304&ipbits=0&initcwndbps=997500&pcm2=yes&lmt=1502953964372465&dur=0.000&itag=43&mime=video%2fwebm&ip=172.251.185.232&sparams=clen%2cdur%2cei%2cgir%2cid%2cinitcwndbps%2cip%2cipbits%2citag%2clmt%2cmime%2cmm%2cmn%2cms%2cmv%2cpcm2%2cpl%2cratebypass%2crequiressl%2csource%2cexpire&ratebypass=yes&id=o-aio4capppe9wpzwlmohlf16f8ylqoykrkwh0steoswbh&gir=yes&key=yt6",             "type": "video\/webm; codecs=\"vp8.0, vorbis\"",             "quality": "medium"         }, {             "itag": "18",             "url": "https:\/\/r5---sn-q4fl6nlz.googlevideo.com\/videoplayback?expire=1503278582&mm=31&mv=m&pl=14&mt=1503256900&ms=au&ei=lugzwy6ycc-i-wok15ggaq&signature=2f70c59bd7f8f63dcefa2935882935245a04c40b.e3d4da76837e3dc74b795b17982796c11bcebf53&source=youtube&beids=%5b9466594%5d&mn=sn-q4fl6nlz&requiressl=yes&clen=18940088&ipbits=0&initcwndbps=997500&pcm2=yes&lmt=1502949691460473&dur=250.938&itag=18&mime=video%2fmp4&ip=172.251.185.232&sparams=clen%2cdur%2cei%2cgir%2cid%2cinitcwndbps%2cip%2cipbits%2citag%2clmt%2cmime%2cmm%2cmn%2cms%2cmv%2cpcm2%2cpl%2cratebypass%2crequiressl%2csource%2cexpire&ratebypass=yes&id=o-aio4capppe9wpzwlmohlf16f8ylqoykrkwh0steoswbh&gir=yes&key=yt6",             "type": "video\/mp4; codecs=\"avc1.42001e, mp4a.40.2\"",             "quality": "medium"         }, {             "itag": "36",             "url": "https:\/\/r5---sn-q4fl6nlz.googlevideo.com\/videoplayback?expire=1503278582&mm=31&mv=m&pl=14&mt=1503256900&ms=au&ei=lugzwy6ycc-i-wok15ggaq&signature=914720619c03249f8a94b02ca36f95d2cd8a50e7.8c06516cefd9667beea2950f63fedbf701e85d69&source=youtube&beids=%5b9466594%5d&mn=sn-q4fl6nlz&requiressl=yes&clen=6819898&ipbits=0&initcwndbps=997500&pcm2=yes&lmt=1502949683841137&dur=250.961&itag=36&mime=video%2f3gpp&ip=172.251.185.232&sparams=clen%2cdur%2cei%2cgir%2cid%2cinitcwndbps%2cip%2cipbits%2citag%2clmt%2cmime%2cmm%2cmn%2cms%2cmv%2cpcm2%2cpl%2crequiressl%2csource%2cexpire&id=o-aio4capppe9wpzwlmohlf16f8ylqoykrkwh0steoswbh&gir=yes&key=yt6",             "type": "video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",             "quality": "small"         }, {             "itag": "17",             "url": "https:\/\/r5---sn-q4fl6nlz.googlevideo.com\/videoplayback?expire=1503278582&mm=31&mv=m&pl=14&mt=1503256900&ms=au&ei=lugzwy6ycc-i-wok15ggaq&signature=a2741e73f8ff9500d84a3a2e69f84536f7168b38.bb6575a1c38784d6841f2d8788fdee38d4f0da2b&source=youtube&beids=%5b9466594%5d&mn=sn-q4fl6nlz&requiressl=yes&clen=2446985&ipbits=0&initcwndbps=997500&pcm2=yes&lmt=1502949684640176&dur=250.961&itag=17&mime=video%2f3gpp&ip=172.251.185.232&sparams=clen%2cdur%2cei%2cgir%2cid%2cinitcwndbps%2cip%2cipbits%2citag%2clmt%2cmime%2cmm%2cmn%2cms%2cmv%2cpcm2%2cpl%2crequiressl%2csource%2cexpire&id=o-aio4capppe9wpzwlmohlf16f8ylqoykrkwh0steoswbh&gir=yes&key=yt6",             "type": "video\/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",             "quality": "small"         }] } 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -