检查数组中的对象是否是另一个数组

425*_*esp 0 php arrays multidimensional-array

我正在尝试访问存储在$ _SESSION中的数组.我已经在循环之前打印出$ _SESSION的计数和内容以获得良好的衡量标准.

// $_SESSION info.
Length: 4
Array
(
    [loggedIn] => 1 
    [total] => 0 
    [plates] => Array ([0] => plates [1] => 14 [2] => 5) 
    [backpack] => Array ([0] => backpack [1] => 78 [2] => 1)
)
Run Code Online (Sandbox Code Playgroud)

在这里我们可以清楚地看到最后两个对象实际上是数组.但是,当我尝试这种is_array方法时,

//PHP code
$length = count($_SESSION);
for ($i = 0; $i < $length; $i++)
{
    if(is_array($_SESSION[$i])){
        echo 'session '.$i.' is an array.<br />';
    }
    else{
        echo 'session '.$i.' is not an array.<br />';
    }
}
Run Code Online (Sandbox Code Playgroud)

所有对象都返回false.

session 0 is not an array.
session 1 is not an array.
session 2 is not an array.
session 3 is not an array.
Run Code Online (Sandbox Code Playgroud)

API说is_array应该找到,«给定的变量是否是一个数组».但是,我想我必须在这里误解一些东西......

Gla*_*vić 5

不要使用for循环.使用foreach.

foreach ($_SESSION as $key => $val) {
    if (is_array($val)) {
        echo 'session '.$key.' is an array.<br />';
    } else {
        echo 'session '.$key.' is not an array.<br />';
    }
}
Run Code Online (Sandbox Code Playgroud)