为了账号安全,请及时绑定邮箱和手机立即绑定

php foreach 打印 2 次

php foreach 打印 2 次

PHP
慕哥9229398 2023-08-11 17:19:45
我不明白的主题是“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,而不是将函数调用作为显示循环的一部分。


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信