0

編集:$iが0ではなく1に初期化されているためですか...???

データベースから取得した特定の値をセッション変数に格納します。これは私がそれを行う方法です:

$i = 1;   
//query to select tuples from the database;
while($i <= $num) //$num is the count of the rows returned by the query
{
    $_SESSION['first'][$i] = $row->first;
    $_SESSION['second'][$i] = $row->second;
    $i++;
}

次に、それらを次のように使用します。

$i = 1;
foreach ($_SESSION['first'] as $names)
{
    //do something with $_SESSION['second'][$i];
    $i++;
}

私が得るエラー:( ページを更新すると消えます)

Invalid argument supplied for foreach() 
4

2 に答える 2

2

あなたのコードに基づいて、あなた$num == 0$_SESSION初期化されることは決してないので、$_SESSION['first']存在しないでしょう。

于 2012-08-28T16:37:42.200 に答える
0

でループする前に、変数が配列であることを確認してくださいis_array

$i = 1;
if (is_array($_SESSION['first'])) { foreach ($_SESSION['first'] as $names) {
    //do something with $_SESSION['second'][$i];
    $i++;
}}

問題は、最初に値を配列に配置する方法に起因する可能性があります。これは、次の方法で簡単に修正できます。is_array

$i = 1;
if (!is_array($_SESSION['first']))
    $_SESSION['first'] = array();
//query to select tuples from the database;
while($i <= $num) //$num is the count of the rows returned by the query
{
    $_SESSION['first'][$i] = $row->first;
    $_SESSION['second'][$i] = $row->second;
    $i++;
}

ドキュメンテーション

于 2012-08-28T16:36:48.453 に答える