0

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 を使用して途中に追加されました。

4

1 に答える 1

0

キーがこのようにスタックしている場合、これを回避することはできません。それがPHPの仕組みです。順序を維持する必要がある場合は、数字の前に文字を付ける必要があります

于 2013-07-24T17:49:19.260 に答える