使用Laravel从日期数组计算每个用户的年龄

时间:2018-05-21 06:19:08

标签: php laravel

我是laravel的新手我想知道是否有从数组计算年龄的方法,所以我的内容看起来像这样:

  Collection {#231 ▼
      #items: array:6 [▼
        0 => "1928-11-18"
        1 => "1938-06-15"
        2 => "1939-03-30"
        3 => "1941-11-08"
        4 => "1940-04-29"
        5 => "1987-06-24"
      ]
    }

如何正确转换数组,使其只包含这样的年龄

Collection {#231 ▼
      #items: array:6 [▼
        0 => 90
        1 => 80
        2 => 79
        3 => 77
        4 => 87
        5 => 31
      ]
    }

3 个答案:

答案 0 :(得分:1)

您还可以在集合上使用map方法

$collection = collect([0 => "1928-11-18",
            1 => "1938-06-15",
            2 => "1939-03-30",
            3 => "1941-11-08",
            4 => "1940-04-29",
            5 => "1987-06-24"]);

            $age = $collection->map(function ($item, $key) {
                return Carbon::parse($item)->diff(Carbon::now())->format('%y');
            });

           return $age->all();

这会给你,

[
"89",
"79",
"79",
"76",
"78",
"30"
]

答案 1 :(得分:0)

使用Carbon's ->age or diffInYears和集合transform(或地图):

$dates->transform(function ($date) {
    return \Carbon\Carbon::parse($date)->age;
});

注意:1928-11-18出生的人是89岁,而不是90岁。

答案 2 :(得分:0)

您可以使用foreach()通过集合进行迭代,然后使用碳->age转换为年龄:

foreach ($collection as $key => $value) {
    $collection[$key] = Carbon::parse($collection[$key])->age;
}

这将为您提供一个Collection,就像您正在编辑Collection一样,而不是创建一个新数组。