我有一个从sql数据库获取的数组,每个元素都保存为 YYYY-MM-DD。但我只需要每个元素的年份。我目前的代码:
if(isset($_GET['date'])){
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = substr($i, 0, 4);
}}
print_r($year);
但是当我运行代码时,它只给了我第一个元素的年份
我已经尝试过array_slice但是它既没有工作
答案 0 :(得分:3)
if(isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
$year = array();
foreach($dates as $i) {
$year[] = substr($i, 0, 4);
}
}
print_r($year);
将会解决2个小修改。
答案 1 :(得分:1)
因为$year
是一个变量,所以$year
的值将在每次迭代时覆盖,尝试将$year
定义为array()
,因此每次都会添加值新数组索引
$year[] = substr($i, 0, 4);
答案 2 :(得分:1)
如果您想要每个日期的年份,您应该在提取它们时使用它们。例如,您可以将它们放在一个数组中:
$years = array();
if (isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = (int)substr($i, 0, 4);
if (($year >= 1900) && ($year <= 2050))
$years[] = $year;
}
}
print_r($years);
请注意,您还可以在附加数组$years
之前测试日期的有效性。当然,您也可以测试生成的数组本身。如果你选择的话,你也可以在foreach循环中“在运行中”使用它们。
但是,您不能将同一个变量重新分配给不同的值,并且期望它不是分配给它的最后一个值。