2017-10-22 110 views
0

爲什麼我不能在函數循環時返回?爲什麼我只有1個結果沒有循環?這裏是我的代碼:循環時不能返回

function search($get){ 
    $i=0; 

    //print_r($get); 
    foreach($get->itemlist as $song){ 
     $i++; 
     $ch = curl_init(''); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_COOKIE, 'wmid=14997771; user_type=2; country=id; session_key=96870dd03ab9280c905566cad439c904;'); 
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36'); 
     $json = curl_exec($ch); 
     $json = str_replace('MusicInfoCallback(', '', $json); 
     $json = str_replace(')', '', $json); 
     $json = json_decode($json); 
     $songurl = $json->mp3Url; 
     //print_r($json); 
     return array($i => array("song" => $json->msong, 
           "singer" => $json->msinger, 
           "url" => $song->songid)); 
    } 
} 
print_r(search("key")); 

任何替代?

+1

你正在返回你的'foreach'循環中的數組。嘗試在'foreach'之外分配一個新變量,然後在循環中設置它的數據,然後在'foreach'之外返回指定的變量。 – eeya

+0

另外,不建議您在json數據上執行'str_replace()'。這可能會無意中破壞您的數據。最好先'json_decode()'然後處理鍵和值。如果在解碼之前必須執行此字符串操作,請使用其他函數/進程。 – mickmackusa

回答

1

未經測試的代碼:

function search($get){ 
    foreach($get->itemlist as $song){ 
     $ch = curl_init(''); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch, CURLOPT_COOKIE, 'wmid=14997771; user_type=2; country=id; session_key=96870dd03ab9280c905566cad439c904;'); 
      curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36'); 
     $json = curl_exec($ch); 
     $json = json_decode(substr($json,18,-1),true); 
     $results[]=['songurl'=>$json['mp3Url'], 
        'song'=>$json['msong'], 
        'singer'=>$json['msinger'], 
        'url'=>$song->songid 
        ]; 
    } 
    return $results; 
} 

我沒有任何樣本數據來驗證我的代碼。我假設'MusicInfoCallback()是捲曲字符串的開始和結束。我建議將所有數據打包到(自動)索引數組中。

$songurl也被「困住」在該功能的範圍內。

+0

只是我看到的錯字。返回$ result;應該返回$結果; OPs並不總是能看到這個:) – TimBrownlaw

+0

@TimBrownlaw thx – mickmackusa