📜  php 定义变量类型 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:37.400000             🧑  作者: Mango

PHP 定义变量类型

在 PHP 中,变量可以代表多种类型的数据,如整数、浮点数、字符串、数组等等。如果您需要将变量限定为特定类型,可以使用以下方法:

声明类型

从 PHP 7 开始,您可以使用 declare(strict_types=1) 来启用严格类型检查。这将强制要求您在函数定义中指定参数和返回值的类型,并且会在有类型错误时引发致命错误。

declare(strict_types=1);

function sum(int $a, int $b): int {
    return $a + $b;
}

echo sum(3, 4); // 输出 7
echo sum(3.5, 4); // 引发 TypeError
类型提示

在函数定义中,您可以使用参数名称后面的冒号来指定参数的类型。这称为参数类型提示。

function foo(int $bar) {
    // $bar 必须是整数
}

同样,您也可以使用函数定义前面的冒号来指定返回值的类型。这称为返回类型提示。

function foo(): int {
    // 必须返回一个整数
    return 42;
}
类型转换

如果您需要将一个变量转换为特定类型,可以使用以下强制类型转换操作符:

  • (int)
  • (float)
  • (string)
  • (bool)
$a = '42';
$b = (int) $a; // $b 现在是整数 42

如果您需要将数组或对象转换为特定类型,可以使用以下函数:

  • intval()
  • floatval()
  • strval()
  • boolval()
$a = ['foo' => '42'];
$b = intval($a['foo']); // $b 现在是整数 42
自动类型转换

在某些情况下,PHP 会将一个变量自动转换为其他类型。例如,在将一个数字和一个字符串相加时,数字会自动转换为字符串。

$a = 42;
$b = 'foo' . $a; // $b 现在是字符串 'foo42'

在其他情况下,PHP 会尝试将字符串转换为数字或布尔值。如果字符串无法转换,则会被视为 0 或 false

$a = '42';
$b = $a + 1; // $b 现在是整数 43

$c = 'foo';
$d = $c ? true : false; // $d 现在是布尔值 false
总结
  • 使用 declare(strict_types=1) 启用严格类型检查。
  • 使用参数类型提示和返回类型提示来限定变量类型。
  • 使用强制类型转换操作符和类型转换函数来将变量转换为特定类型。
  • 了解 PHP 的自动类型转换规则。