【问题标题】:Print variable value out of foreach loop in php without page refreshing在php中从foreach循环中打印变量值而不刷新页面
【发布时间】:2014-01-20 08:55:46
【问题描述】:

我在返回变量中使用 curl php 获取结果。我使用每个循环来检索返回变量中的所有键值并打印我通过索引获得所有值。这里一切都很好,但我正在尝试第 6 次没有值存储在 $_SESSION['date'] 变量中并在函数外部回显它。第一次运行页面时它不会打印 $_SESSION['date']。但是当我们刷新页面时它会打印。请给我解决方案。谢谢我的代码是 我想在不刷新页面的情况下在 div 中打印日期。

<html>
<body>
  <div id="head"> <?php echo $_SESSION['date']; ?></div>
  <?php
  function curlUsingGet($url, $data)
  {
  if(empty($url) OR empty($data))
  {
    return 'Error: invalid Url or Data';
  }

  $fields_string = '';
  foreach($data as $key=>$value) { $fields_string .= $key.'='.urlencode($value).'&'; }
  rtrim($fields_string,'&');

  $urlStringData = $url.'?'.$fields_string;
  $_SESSION['urlStringData']=$urlStringData;
  $cookie= "cookie.txt";
  $ch = curl_init();

   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,0);
   curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
   curl_setopt($ch, CURLOPT_COOKIESESSION,true);
   curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
   curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
   curl_setopt($ch, CURLOPT_FRESH_CONNECT,true);
   curl_setopt($ch, CURLOPT_URL,$urlStringData);

   $return = curl_exec($ch);
   $arrel = explode('|',$return);

foreach($arrel as $val)
    {
    $new_el=explode('~',$val);
    print"<ul data-role=listview  data-icon=false style=margin-top:3%;>";
    print" <li >";
    print"<a href='causelistmsg.php?a=$new_el[3]&b=$new_el[4]'>";
    print"<font class=alignleft size='3' style=color:#FFFF00;>";
    echo $new_el[0]; 
    print"</font>";
    print"<font size='3' class=aligncenter style=color:#FF8000;>";
    echo $new_el[2];
    print"</font>";
    print"<font class=alignright size='3' style=color:#00CC00;>";
    echo $new_el[1]; 
    print"</font>";
    print"</a>";
    print" </li >";
    print" </ul>";
    $_SESSION['date'] = $new_el[6];
    curl_close($ch);
    }

    $_SESSION['date'];
    $data = array('u' =>$_SESSION['councel']);
    echo curlUsingGet('http://"url"/causelist/CauseListData',$data);
 ?>

【问题讨论】:

  • 你在哪里调用 session_start() ?
  • 首先我调用 session_start();在文档类型之前
  • 您应该在页面顶部使用session_start() 开始会话。
  • 是的,先生,我首先开始 session_start
  • 这里一切都很好,但是当我尝试在 foreach 循环外打印 $_SESSION['date'] 时,意味着 div 中的页面顶部在页面第一次运行时不会打印。但是当我刷新将打印日期的页面。

标签: php foreach


【解决方案1】:

你先调用echo $_SESSION['date'],然后才给它赋值;

您应该做的是在实际开始输出之前完成所有逻辑,即。 e.您的 foreach($arrel as $val) 部分应该只填充一个数组。

顺便说一句。您将$_SESSION['data'] 设置在foreach 循环内,因此它会被多次重写。这是正常的,还是确实是逻辑缺陷?

【讨论】:

  • 先生,我想从 new_el[6] 中检索日期并在 div 的页面顶部打印。
  • 看,您的问题是,您首先执行&lt;?php echo $_SESSION['date']; ?&gt;,然后才在第一次运行时为$_SESSION['date'] 赋予一个值。
猜你喜欢
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 2014-05-27
相关资源
最近更新 更多