简体   繁体   中英

Calculate age in PHP array

I would like to output the age of the person rather than the Date of birth in these arrays.

$players = array (
  array("Name 1","Nickname 1","07-15-1986"),
  array("Name 2","Nickname 2","07-27-1985")
);

$totalPlayers = array_sum(array_map("count", $players))/3;

for ($row = 0; $row < $totalPlayers; $row++) {
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$players[$row][$col]."</li>";
  }
  echo "</ul>";
}

Current output

  • Name 1

  • Nickname 1

  • 07-15-1986

  • Name 2

  • Nickname 2

  • 07-27-1985

A tad simpler:

<?
    header("Content-type: text/plain");
    $players = array (
      array("Name 1","Nickname 1","07-15-1986"),
      array("Name 2","Nickname 2","07-27-1978")
    );

    // today's date
    $date1 = date_create(date("Y-m-d"));
    foreach ($players as $obj)
    {
        // must replace "-" by "/" otherwise strtotime will assume european format dd-mm-yy
        $date2 = date_create(date("Y-m-d", strtotime(str_replace("-", "/", $obj[2]))));
        $interval = date_diff($date2, $date1);
        echo $obj[0]." (".$obj[1].") :".$interval->format('%R%y years %m months')."\n";
    }
?>
$players = array ( array("Name 1","Nickname 1","07-15-1986"), array("Name 2","Nickname 2","07-27-1985") ); // Not sure why you didn't just use count... $totalPlayers = count($players); $now = new DateTime(); // Replace the date field in the array with the age of each player. // Use the difference, in years, between today's date // and the player's birthday. $players = array_map( function($item) use ($now) { $item[2] = $now->diff( DateTime::createFromFormat('m-d-Y', $item[2]) )->y . ' years old'; return $item; }, $players ); for ($row = 0; $row < $totalPlayers; $row++) { echo "<ul>"; for ($col = 0; $col < 3; $col++) { echo "<li>".$players[$row][$col]."</li>"; } echo "</ul>"; } // • Name 1 // • Nickname 1 // • 36 years old // ...

This works +- a few days.

$age = floor((time() - strtotime(.$players[$row][2])) / 31540000);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM