如何在PHP数组中计算并输出年龄而非出生日期?
修改方案
直接修改循环内的输出逻辑,将出生日期转换为年龄即可,以下是修改后的完整代码:
$players = array ( array("Name 1","Nickname 1","07-15-1986"), array("Name 2","Nickname 2","07-27-1985") ); // 直接获取玩家数量,无需复杂计算 $totalPlayers = count($players); for ($row = 0; $row < $totalPlayers; $row++) { echo "<ul>"; for ($col = 0; $col < 3; $col++) { // 判断是否为出生日期列(索引2) if ($col === 2) { // 将日期字符串转为DateTime对象 $birthDate = DateTime::createFromFormat('m-d-Y', $players[$row][$col]); $currentDate = new DateTime(); // 计算年龄 $age = $birthDate->diff($currentDate)->y; echo "<li>" . $age . "</li>"; } else { echo "<li>" . $players[$row][$col] . "</li>"; } } echo "</ul>"; }
关键说明:
- 简化玩家数量计算:用
count($players)直接获取数组长度,替代原有的复杂计算,逻辑更清晰高效。 - 日期解析适配:使用
DateTime::createFromFormat指定m-d-Y格式解析出生日期,避免默认解析规则导致的错误。 - 年龄计算:通过
diff()方法计算出生日期与当前日期的时间差,提取年份差即为实际年龄。
修改后输出示例:
<ul> <li>Name 1</li> <li>Nickname 1</li> <li>37</li> </ul> <ul> <li>Name 2</li> <li>Nickname 2</li> <li>38</li> </ul>
内容的提问来源于stack exchange,提问作者KJThaDon
相关产品推荐
相关产品推荐

