我有一个表单,有一个名为"date[]"的输入框和一个按钮,允许您创建更多的行来添加更多的日期,所有的名称为"date[]"。我的文本输入框中的日期选择器格式是m-d-Y(03-15-2015)。当我提交表单时,我需要将日期数组转换为mysql日期格式Y-m-d(2015-03-15)。我成功地捕获了数组中的日期在我的php脚本和我试图做一个foreach循环和转换每个日期[]值为时间戳使用'strtotime',然后我将转换为正确的Y-m-d格式。问题是strtotime期望的是字符串而不是数组。
我的问题是我如何去迭代每个日期[]值并将其转换为时间戳?没有固定数量的日期,它可以随着每个用户而变化。
提前谢谢你。
可以使用array_map()或array_walk()
下面是一个array_walk的例子,可以让你在调用时指定格式。
$dates = ['03-15-2015', '05-29-2015'];
array_walk($dates, function(&$date, $i, $formats)
{
$datetime = DateTime::createFromFormat($formats['from'], $date);
$date = $datetime->format($formats['to']);
}, ['from' => 'm-d-Y', 'to' => 'Y-m-d']);
使用foreach:
$dates = $_POST['date']; // in case you are using POST request
foreach($dates as $date){
$datetime = DateTime::createFromFormat('m-d-Y', $date);
$cDates[] = $datetime->format('Y-m-d');
}
现在所有转换后的日期都存在于$cDates数组中