【问题标题】:Warning when counting values in session array计算会话数组中的值时发出警告
【发布时间】:2021-05-17 14:33:13
【问题描述】:

自从升级到 PHP 7.2 后,我现在在尝试获取 PHP 会话中的值数量时收到此警告

Parameter must be an array or an object that implements Countable in

我尝试用来获取值数量的代码是

$numSelected = count($_SESSION['selectStandards']);

$numSelected = sizeof($_SESSION['selectStandards']);

我认为php会话是一个数组,但我的理解似乎不正确,但我不确定如何将会话转换为数组。

话虽如此,将我的代码保持原样会导致我的问题更进一步吗?我现有的代码完全按原样工作。

这是 $_SESSION['selectStandards'] 的 var_dump

array(4) { [0]=> string(6) "107732" [1]=> string(6) "107733" [2]=> string(6) "107731" [3]=> string(6) "107734" }

【问题讨论】:

  • 数组中的特定元素不是数组
  • @Andreas 我不完全确定你的意思是什么
  • var_dump($_SESSION['selectStandards']); 你会看到它不是一个数组或一个可数的对象。 PHP 会话是数组,但它们包含的值可以是任何值。
  • @JohnConde 会将会话转换为数组修复它吗?
  • 这是一个数组,所以you shouldn't be getting this error。在您尝试对其项目进行计数时,该项目是否存在于您的会话中?你在某处遗漏了一些东西。

标签: php arrays session


【解决方案1】:

为什么不检查它是否存在,如果它确实是一个数组,哪个可以数?

$numSelected = isset($_SESSION['selectStandards']) && is_array($_SESSION['selectStandards']) ? count($_SESSION['selectStandards']) : 0;

【讨论】:

  • 它肯定存在,因为我在我的工作代码中从它进一步拉取值。我只需要找到一种方法来获取会话中的值的数量。 count 和 sizeof 正在返回我期望的值,但我知道这不是正确的方法
  • 这会消除错误,但可能不会给他们预期的结果
  • $_SESSION['selectStandards'] 是什么??
  • 完全正确。如果他们将var_dump($_SESSION['selectStandards']); 的输出添加到他们的问题中,我们可以更好地帮助他们。
  • 嗯...如果是 CSV,则需要在 count() 之前 explode()
猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多