我需要向发布的日期值添加一个零,因为MySQL日期值将用作显示添加的照片的目录路径。当前目录保存为2012-2-5,MySQL条目为2012-02-05。
我尝试了以下方法,但似乎不起作用:
$dates = array($_POST['photos_year'], $_POST['photos_month'], $_POST['photos_day']);
foreach($dates as $date) {
if (strlen($date) == 1) {
$date = '0' . $date;
}
}
$photos->date = $dates[0] . "-" . $dates[1] . "-" . $dates[2];我正在使用一个for循环来创建日期表单,这对我来说可能更容易编辑,但是我还没有成功:
<select name="photos_month" id="photos_month" tabindex="3">
<option value ="">- Month -</option>
<?php
for($date=01;$date<=12;$date++) {
if (isset($photos) && $date==$month) {
echo "<option value='".$date."' selected='selected'>".$date."</option>";
} else {
echo "<option value='".$date."'>".$date."</option>";
}
}
?>
</select>发布于 2012-03-06 03:27:50
您需要将foreach更新为
foreach ($dates as &$date)目前,$date是一个新符号,不会覆盖该值。这应该可以解决这个问题,但是在选项中有正确的字符串可能也很好。您可以使用str_pad来做到这一点。
发布于 2012-03-06 03:28:16
在执行foreach时,元素变量$date是一个新变量,是数组中的值的副本。您应该使用密钥并更新原始数组。
foreach($dates as $key => $date) {
if (strlen($date) == 1) {
$dates[$key] = '0' . $date;
}
}此外,您在year上运行该代码,您不希望在年份中添加零,只希望将月份和日期添加到年份中。
发布于 2012-03-06 03:27:50
查看字符串板函数http://php.net/manual/en/function.str-pad.php
以及数组映射函数http://php.net/manual/en/function.array-map.php
将这两者结合使用将允许您遍历日期的每个部分(Array_map),并使用0填充数值(使用str_pad)
代码应该如下所示
$dates = array_map("padString",$dates);
function padString($string) {
return str_pad($string,2,"0",STR_PAD_LEFT);
}
print_r($dates);//提供数组( => 2012 1 => 02 2 => 05 )
https://stackoverflow.com/questions/9572609
复制相似问题