0

$_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)
)

ここでは、最後の2つのオブジェクトが実際には配列であることがはっきりとわかります。しかし、私がその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、「指定された変数が配列であるかどうか」を検出することになっていると言います。しかし、私はここで何かを誤解しているに違いないと思います...

4

3 に答える 3

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 />';
    }
}
于 2012-10-01T18:24:09.107 に答える
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 />';
    }
}
于 2012-10-01T18:24:24.060 に答える
0

使用する:

foreach($_SESSION as $key=>$val){
    if(is_array($val)){
    // code here
    }
}
于 2012-10-01T18:24:45.823 に答える