foreach
連想配列のキーが数値である連想配列の配列を使用する際に問題があります。
$rows = $_POST["row"];
// print_r($rows);
foreach ($rows as $r) {
fwrite($f, $r["date"]);
fwrite($f, "#");
fwrite($f, $r["desc-short"]);
fwrite($f, "#");
// etc.
}
POST 変数には、 で識別される配列が含まれていますrow[index]
。貼り付けるとprint_r()
、元の形式で表示された順序で POST 値が表示されます (行は途中に挿入でき、カウンターは追加された場所ではなくいつ追加されたかを表すため、必ずしも番号順ではありません)。行2の後に挿入されたとしても(たとえば)、最後に foreach
印刷(8行を想定)することを繰り返します。row[8]
私のキーは数字であるため、キーをforeach
順序どおりに扱っているようです。この動作を回避するにはどうすればよいですか?
からのサンプル データの出力print_r($rows)
:
Array ( [1] => Array ( [date] => 12/12/2013 [desc-short] => Show title [desc-long] => A sample long description [start-time] => 12:30 [duration] => 13 [rating] => TVY ) [2] => Array ( [date] => 12/12/2013 [desc-short] => TEST [desc-long] => TEST [start-time] => 12:45 [duration] => 14 [rating] => TVY ) [8] => Array ( [date] => 12/12/2013 [desc-short] => Calendar of Events [desc-long] => A list of local events displayed every hour on the hour [start-time] => 13:00 [duration] => 15 [rating] => TVY ) [3] => Array ( [date] => 12/12/2013 [desc-short] => Show title [desc-long] => A sample long description [start-time] => 12:45 [duration] => 12 [rating] => TVY ) [4] => Array ( [date] => 12/12/2013 [desc-short] => Calendar of Events [desc-long] => A list of local events displayed every hour on the hour [start-time] => 13:00 [duration] => 15 [rating] => TVY ) [5] => Array ( [date] => 12/12/2013 [desc-short] => Show title [desc-long] => test [start-time] => 13:15 [duration] => 100 [rating] => TVY ) [6] => Array ( [date] => 12/12/2013 [desc-short] => Calendar of Events [desc-long] => A list of local events displayed every hour on the hour [start-time] => 15:00 [duration] => 15 [rating] => TVY ) )
そして、はい、7がありません。私もそれを調べる必要があります。行番号 1 ~ 6 はファイルから読み込まれ、[8] は後で JavaScript を使用して途中に追加されました。