在遍历关联数组的数组时,PHP';s按键而非索引对foreach迭代进行排序


While iterating through an array of associative arrays, does PHP's foreach order iterations by key instead of index?

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值(这不一定是数字顺序,因为行可以插入中间,计数器表示添加它们的时间,而不是位置),但当我使用foreach迭代时,它最终会打印最后的row[8](假设为八行),即使它插入在第2行之后(例如)。

似乎因为我的密钥是数字,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添加到它们中间的。

如果你的钥匙卡在这里,你就无法避免这种情况。PHP就是这样工作的。如果你需要维护订单,那么你需要在数字前面加上字母