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

时间:2012-10-01 18:21:15

标签: 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)
)

这里我们可以清楚地看到最后两个对象实际上是数组。但是,当我尝试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 />';
    }
}

所有对象都返回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.

API表示is_array应该找到,«给定变量是否为数组»。但是,我想我必须在这里误解一些事情......

3 个答案:

答案 0 :(得分: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 />';
    }
}

答案 1 :(得分:1)

这里的问题是你试图用数字索引而不是相应的密钥迭代一个关联数组。试试这个:

foreach ($_SESSION as $key => $value)
{
    if(is_array($value)){
        echo 'session '.$key.' is an array.<br />';
    }
    else{
        echo 'session '.$key.' is not an array.<br />';
    }
}

答案 2 :(得分:0)

使用:

foreach($_SESSION as $key=>$val){
    if(is_array($val)){
    // code here
    }
}