Рассчитать возраст для каждого пользователя из массива даты, используя Laravel - PullRequest
0 голосов
/ 21 мая 2018

Я новичок в 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 голосов
/ 21 мая 2018

Вы также можете использовать метод карты на коллекции

$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"
]
0 голосов
/ 21 мая 2018

Вы можете выполнить итерацию по Коллекции с помощью foreach(), а затем преобразовать в Возраст с помощью Углерода ->age:

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

Это даст вам Коллекциюкак то, что вы делаете, редактирует коллекцию, а не создает новый массив.

0 голосов
/ 21 мая 2018

Используйте Углеродные ->age или diffInYears и коллекцию преобразуйте (или карту):

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

Примечание: кто-то, родившийся 1928-11-18, является89 лет, а не 90.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...