为什么我不能在函数循环时返回?为什么我只有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"));
任何替代?
你正在返回你的'foreach'循环中的数组。尝试在'foreach'之外分配一个新变量,然后在循环中设置它的数据,然后在'foreach'之外返回指定的变量。 – eeya
另外,不建议您在json数据上执行'str_replace()'。这可能会无意中破坏您的数据。最好先'json_decode()'然后处理键和值。如果在解码之前必须执行此字符串操作,请使用其他函数/进程。 – mickmackusa