<?php练功房

第 3 章 · 函数 · 第 3.3 课

数学、日期与格式化

约 12 分钟

数学函数

函数例子结果
round($x, $n)round(3.14159, 2)3.14
floor / ceilfloor(4.7) / ceil(4.2)4 / 5
absabs(-8)8
sqrtsqrt(16)4
number_format($x, $n)number_format(1234567.891, 2)1,234,567.89
random_int($min, $max)random_int(1, 6)1 到 6 之间的随机整数

日期和时间

date(格式) 把时间格式化成字符串,常用格式字符:Y 四位年、m 两位月、d 两位日、H:i:s 时分秒、n / j 不补零的月和日。

strtotime 能读懂很多英文写法,比如 "+1 week"、"next monday"。需要计算两个日期之间的差时,用 DateTime 类更方便。

运行环境默认是 UTC 时区,先用 date_default_timezone_set('Asia/Shanghai') 设成北京时间。

选择题

number_format(1999.5) 的结果是?

练习 1

文件大小

写函数 formatBytes(int $bytes): string,把字节数转成易读的形式:

  • 小于 1024:"512 B"
  • 小于 1024 × 1024:以 KB 为单位,保留 1 位小数,如 "1.5 KB"
  • 否则以 MB 为单位,保留 1 位小数,如 "4.8 MB"

练习 2

算年龄

写函数 age(string $birthday, string $today): int,返回周岁。生日还没到就不算长一岁:

  • age('2000-06-15', '2024-06-14') → 23
  • age('2000-06-15', '2024-06-15') → 24