前提・実現したいこと
PHP(NetBeans)で問題文を作成するコードを書いています。
質問文、選択肢、正答のリストは、csvで作成したものを読み込ませて、
連想配列にして、1問ずつ取り出して表示するようにしたいと思っています。
発生している問題・エラーメッセージ
連想配列から、質問文を別に用意した変数に代入しようとしたところ、
中身が無いと返されてしまいました。他の値(選択肢、正答などは)想定通りに読み込み出来ています。
該当のソースコード
PHP
1//csvファイルサンプル(sample.csv) 2query, item1, item2, item3, correct 3testtest1,1,2,3,2 4testtest2,1,2,3,1 5 6 7 8//以下該当コード 9 10$_SESSION['count'] = 0; 11 12// ファイルオープン 13if (($file = fopen($fileName,"r")) === FALSE){ 14 err(); 15}; 16 17$quizList = array(); // クイズリスト変数の初期化 18$keys = null; // 項目変数の初期化 19 20//csvファイルを連想配列に読み込ませる 21while (($data = fgetcsv($file,0,",")) !==FALSE) { 22 if ($keys === null){ // 1行目を項目として記憶 23 $keys = $data; 24 } 25 else{ 26 $quizList[] = array_combine($keys, $data); // 連想配列として記録 27 } 28} 29 30$question = $quizList[$_SESSION['count']][query]; //質問文を取り出す 31$ans_num = $quizList[$_SESSION['count']][correct]; //正解番号を取り出して格納 32 33//デバッグ用のエラー処理 34if ($quizList[$_SESSION['count']][query] === null ){ 35 err(); 36} 37
試したこと
複数のphpファイルで読み込みをかけたいので、$_SESSION['count']使っているのですが、
検証の為、固定値で0を入れても結果は同じでした。
$quizList[0][query] === null
またNetBeansのデバッグ中に値を見ると、quizList[0][query]の値は確かにtesttest1になっていました。
$question = $quizList[$_SESSION['count']][query];の部分を$question = (string)$quizList[$_SESSION['count']][query];と書いても、結果は変わりませんでした。
また$questionを先に適当な値("test")に入れた後に、連想配列の値を入れると、nullになってしまいます。
補足情報(FW/ツールのバージョンなど)
NetBeans 8.2
csv (UTF-8)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。