获取数组每个元素的前 4 位数字


Get the first 4 digits of each element of an array

我有一个从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);