php curl 寫在同一個function但沒辦法同時兩次請求?

发布于 2022-09-06 22:43:47 字数 1348 浏览 11 评论 0

我把curl寫在一個function像這樣:

function httpRequest ($api, $data_string)
{
  $ch = curl_init($api);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  $result = curl_exec($ch);
  curl_close($ch);

  return json_decode($result);
}

然後我同一頁有兩隻請求

$api_a = 'a';
$api_b = 'b';

$get_a = array(
      "session" => $_SESSION['session']
    );
    $get_a_str = json_encode($get_a);
    $get_a = httpRequest($api_a, $get_a_str);
    
$get_b = array(
      "session" => $_SESSION['session']
    );
    $get_b_str = json_encode($get_b);
    $get_b = httpRequest($api_b, $get_b_str);

寫在同一頁:

  <?foreach ($get_a->dataA as $key) {?>
          <?=@$key->{'name'};?>
        <?}?>
  <?foreach ($get_b->dataB as $key) {?>
          <?=@$key->{'name'};?>
        <?}?>

為什麼這樣不行同時呢?
他只能請求其中一個,另一個會無效?(誰在最上面誰才能運行)

他會抱錯:

Undefined variable: get_b
Trying to get property 'dataB' of non-object
Invalid argument supplied for foreach()

我只要把A刪掉就可以運行B
把B刪掉就可以運行A

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

左秋 2022-09-13 22:43:47

php官方在线文档的foreach页面里分别提到过两个问题:

  1. 最后一个元素的$value在执行完foreach循环之后仍会保留,所以需要手动执行unset()来将其销毁。
  2. foreach不支持使用@标记抑制错误。

另外还有个建议,如果foreach是在视图页分开写的,可以写成:

<?php foreach($arr as $ele): ?>

<?=$ele?>

<?php endforeach; ?>

这种形式,在流程控制的替代语法中有介绍。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文