当我的数组只包含一个值时,它不能被识别为数组


My array isn't recognized as array when it contains only one value

在我的代码中,我在循环中使用以下行填充数组:

 $_SESSION['my_array'][] = $some_value;

在每次执行这一行之后,我使用function in_array()做一些检查(这里不重要是为了什么目的)。然而,在第一次迭代时,它说:

« in_array() expects parameter 2 to be array ».

如何解决这个问题?

您可以像这样初始化数组(在填充值之前):

$_SESSION['my_array']=array();

这样你就可以确定它是一个数组,即使它是空的

您正在错误地分配或访问它

使用

$_SESSION['my_array'] = $some_value;

当你做in_array检查时,你可以将第二项转换为一个数组,所以如果它是空的,那么它将传递一个空数组。这样,当您不需要设置会话时,您就不必为会话设置任何内容(这可能会在以后绊倒您)

if (in_array('foo', (array)$_SESSION['my_array'])) {
  // do something
}