我不明白的主题是“Hello”打印一次。另一个 Foreach“Earth”打印两次。我不明白问题出在哪里。当我卸载 Foreach 时,问题消失了,但当我再次输入 foreach 时,问题又出现了<div class="carousel-clip" data-jcarousel="true" style="width: 874.798px;"><ul class="carousel-list" style="left: 0; top: 0;"><?php foreach (YoutubeApi::getAllVideo('brhhkavxkgU') as $item): ?><p>Hello</p><?php endforeach; ?></ul></div><!-- end .carousel-clip --><div class="loop-content switchable-view grid-small" data-view="grid-small" data-ajaxload="1"><div class="nag cf"><?php foreach (YoutubeApi::getAllVideo('brhhkavxkgU') as $item): ?><p>world</p><?php endforeach; ?></div></div>class YoutubeApi{public static function getAllVideo($videoId) { $url = "https://www.googleapis.com/youtube/v3/videos"; static $all = []; $params = [ 'key' => '...', 'part' => 'statistics,snippet', 'id' => $videoId, ]; $call = $url . '?' . http_build_query($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $call); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); $output = curl_exec($ch); $data = NULL; $data = json_decode($output, true); $all[] = $data; curl_close($ch); return $all; }}
1 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
这是因为你的数组$all
被声明为静态的,这意味着第二次运行时,第一个结果仍然存在于数组中。每次调用该函数时,它都会将新结果添加到数组中$all
。
如果这不是所需的行为,则每次都需要清除数组,或者不在函数中将其声明为静态。
或者,如果这是所需的行为,但您想要多次显示结果,请更改调用代码以检索结果,然后对它们进行 foreach,而不是将函数调用作为显示循环的一部分。
- 1 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消