【问题标题】:Setting an array as a session variable in PHP and then accessing it在 PHP 中将数组设置为会话变量,然后访问它
【发布时间】:2013-05-06 22:58:27
【问题描述】:

如果我有一个数组:

$resultArr = pg_fetch_array($result,NULL);

并在我的 php 代码顶部声明:

$_SESSION['resultArr'] = $resultArr;

为什么我不能像这样访问数组元素:

for($i = 0; $i < $NUM_COLUMNS; $i++){
    // creation of the table and row are handled elsewhere.
    // The table is also within a <form> if that matters
    echo "<td>" .$_SESSION['resultArr'][$i]."</td>";
}

我的表最终有空列,我不知道为什么...

编辑:我想通了。我在代码顶部(就在 session_start() 之后)声明了$_SESSION['resultArr'] = $resultArr;,但它没有被设置。我把它移到了$resultArr = pg_fetch_array($result,NULL);之后的点

这是它应该如何工作还是应该在代码顶部正常工作?

【问题讨论】:

  • 您是否正确初始化了会话? var_dump($_SESSION['resultArr']); 输出什么?
  • $NUM_COLUMNS 设置为什么?另外,您还记得开始会话吗?
  • 没有理由这不应该工作。请通过var_dump($_SESSION['resultArr']) 了解里面的内容。
  • 我认为$NUM_COLUMNS是你的问题
  • 嗯,你刚刚回答了你自己的问题。 $_SESSION['resultsArr'] 为空。

标签: php html arrays session html-table


【解决方案1】:

也许你提过也没有提过,但在对$_SESSION进行任何操作之前,你必须先致电session_start()

【讨论】:

  • 是的,session_start() 在任何东西之前都在顶部
【解决方案2】:

编辑后,是的,这就是它的工作方式,您首先需要声明$resultArr,然后将其值放入会话数组中

因为在 php 中您不再使用指针, $_SESSION['resultArr'] = $resultArr; 的意思是“$_SESSION['resultArr'] 在那个精确的时刻获取 $resultArr 的所有值”,但这并不意味着“它们是相同的,如果一个改变,那么另一个也改变”。

【讨论】:

    猜你喜欢
    • 2023-01-23
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    相关资源
    最近更新 更多