web-dev-qa-db-ja.com

PHPでセッション変数に配列を格納する方法

//質問テーブルから10の質問を返します

$result = mysqli_query($con,"SELECT question FROM questions ORDER BY Rand() LIMIT 10' ");
while($row = mysqli_fetch_row($result))
{
$que[]=$row[0];
}  

次に、$que[]のこのセット全体をセッション変数に格納する必要があります。 (つまり、10の質問)

このようなもの

$_SESSION['question'] = $que[]; 

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

つまり、$my_array[0]は最初の質問を返し、$my_array[1]は2番目の質問を返します。

(事前に助けてくれてありがとう)

7
Aayush

割当

_$_SESSION['question'] = $que; 
_

print_r($_SESSION['question'][0]);は最初の質問をします。

10
Prasanth Bendra

ほぼ正しいですが、[]配列に追加するとき。

$_SESSION['question'] = $que;

最初にセッションがあることを確認してください。セッションがまだ存在しない場合は、これをスクリプトの先頭に配置するとセッションが開始されます。

if( !isset( $_SESSION ) ) {
    session_start();
}

それを引き上げるには:

$array = $_SESSION['question'];  //Assigns session var to $array
print_r($array);                 //Prints array - Cannot use echo with arrays


最終追加

配列を反復処理するには、通常、forまたはforeachを使用できます。 forステートメントは、配列キーが増分なし(0、1、2、3など)でギャップがない場合にのみ実際に機能します。

for( $x = 0, $max = count($array); $x < $max; ++$x ) {
    echo $array[$x];
}

foreach( $array as &$value ) {
    echo $value;
}

どちらもパフォーマンスを考慮して作成されています。参照(&$value、&)に注意してください。参照を編集すると、元の値が変更されます。参照で使用しない場合は、値のコピーが作成されます。だから例えば:

//Sample Array
$array = array( '0' => 5, '1' => 10 );


//By Reference
foreach( $array as &$value ) {
    $value += 2;               //Add 2 to each value
    echo $value;               //Echos 7 and 12, respectively
}
print_r( $array );  //Now equals array( '0' => 7, '1' => 12 )


//Normal Method
foreach( $array as $value ) {
    $value += 2;               //Add 2 to each value
    echo $value;               //Echos 7 and 12, respectively            
}
print_r( $array );  //Still equals array( '0' => 5, '1' => 10 )

参照はより高速ですが、元の配列をそのままにして値を変更することを計画している場合はそうではありません。

6
Jason

使用する

session_start();
 $_SESSION['question'] = $que;
&que = array(an array of your 10m question s);

別のページでそれを呼び出して質問のラインナップを取得したい場合は、

while (list($key, $value) = each($_SESSION)) {
#Echo the questions using $key
    echo "Here is a list of your questions";
    echo "<br/>";
    while (list($key2, $value2) = each($_SESSION)) {
#$value2 show's name for the indicated ID
#$key2 refers to the ID
         echo "<br/>";
        echo "Question: ".$value2." ";
        echo "<br/>";
    }
    echo "<br/>"; 
}

またはあなたも使うことができます

print_r;
2
Dabby