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

时间:2015-01-16 10:05:35

标签: php arrays substr

我有一个从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但是它既没有工作

3 个答案:

答案 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循环中“在运行中”使用它们。

但是,您不能将同一个变量重新分配给不同的值,并且期望它不是分配给它的最后一个值。