我有一个从sql数据库中得到的数组,每个元素都保存为年-月-日。但我只需要每个元素的年份。 我当前的代码:
if(isset($_GET['date'])){
$dates= unserialize(urldecode($_GET['date']));
foreach($dates as $i){
$year = substr($i, 0, 4);
}}
print_r($year);
但是当我运行代码时,它只给了我第一个元素的年份
我已经尝试过array_slice但这也不起作用
if(isset($_GET['date'])) {
$dates= unserialize(urldecode($_GET['date']));
$year = array();
foreach($dates as $i) {
$year[] = substr($i, 0, 4);
}
}
print_r($year);
2个小改动可以修复它。
如果你想要每个日期的年份,你应该在提取它们时使用它们。例如,您可以将它们放在一个数组中:
$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循环中"即时"使用它们。
但是,您不能为同一变量重新分配不同的值,并期望它不是分配给它的最后一个值。
,因为您的$year
是一个变量,因此每次迭代时都会覆盖$year
的值 尝试将$year
定义为array()
,以便每次在新数组索引上添加值
$year[] = substr($i, 0, 4);