Loading... 这份 [PHP](https://www.php.net/manual/zh/index.php) 备忘单为快速查找最常用代码的正确语法提供了参考 来源:[https://dev.bi/docs/php.html](https://dev.bi/docs/php.html) ## 入门 ### hello.php ```php <?php // 以 PHP 开放标签开头 echo "Hello World\n"; print("Hello jaywcjlove.github.io"); ?> ``` PHP 运行命令 ```shell $ php hello.php ``` ### 变量 Variables ```php $boolean1 = true; $boolean2 = True; $int = 12; $float = 3.1415926; unset($float); // 删除变量 $str1 = "How are you?"; $str2 = 'Fine, thanks'; ``` 查看: [Types](https://dev.bi/docs/php.html#php-%E7%B1%BB%E5%9E%8B) ### 字符串 Strings ```php $url = "jaywcjlove.github.io"; echo "I'm learning PHP at $url"; // 连接字符串 echo "I'm learning PHP at " . $url; $hello = "Hello, "; $hello .= "World!"; echo $hello; # => Hello, World! ``` 查看: [Strings](https://dev.bi/docs/php.html#php-%E5%AD%97%E7%AC%A6%E4%B8%B2) ### 数组 Arrays ```php $num = [1, 3, 5, 7, 9]; $num[5] = 11; unset($num[2]); // 删除变量 print_r($num); # => 1 3 7 9 11 echo count($num); # => 5 ``` 查看: [Arrays](https://dev.bi/docs/php.html#php-%E6%95%B0%E7%BB%84) ### 运算符 Operators ```php $x = 1; $y = 2; $sum = $x + $y; echo $sum; # => 3 ``` 查看: [Operators](https://dev.bi/docs/php.html#php-%E8%BF%90%E7%AE%97%E7%AC%A6) ### Include #### vars.php ```php <?php // 以 PHP 开放标签开头。 $fruit = 'apple'; echo "I was imported"; return 'Anything you like.'; ?> ``` #### test.php ```php <?php include 'vars.php'; echo $fruit . "\n"; # => apple /* 与 include 相同, 如果不能包含则导致错误*/ require 'vars.php'; // 也有效 include('vars.php'); require('vars.php'); // 通过 HTTP 包含 include 'http://x.com/file.php'; // 包含和返回语句 $result = include 'vars.php'; echo $result; # => Anything you like. ?> ``` ### 功能 Functions ```php function add($num1, $num2 = 1) { return $num1 + $num2; } echo add(10); # => 11 echo add(10, 5); # => 15 ``` 查看: [Functions](https://dev.bi/docs/php.html#php-%E5%87%BD%E6%95%B0) ### 注释 Comments ```php # 这是一个单行 shell 样式的注释 // 这是一行 c++ 风格的注释 /* 这是一个多行注释 另一行注释 */ ``` ### 常数 Constants ```php const MY_CONST = "hello"; echo MY_CONST; # => hello # => MY_CONST is: hello echo 'MY_CONST is: ' . MY_CONST; ``` ### 类 Classes ```php class Student { public function __construct($name) { $this->name = $name; } } $alex = new Student("Alex"); ``` 查看: [Classes](https://dev.bi/docs/php.html#php-%E7%B1%BB) ## PHP 类型 ### 布尔值 Boolean ```php $boolean1 = true; $boolean2 = TRUE; $boolean3 = false; $boolean4 = FALSE; $boolean5 = (boolean) 1; # => true $boolean6 = (boolean) 0; # => false ``` 布尔值不区分大小写 ### 整数 Integer ```php $int1 = 28; # => 28 $int2 = -32; # => -32 $int3 = 012; # => 10 (octal) $int4 = 0x0F; # => 15 (hex) $int5 = 0b101; # => 5 (binary) # => 2000100000 (decimal, PHP 7.4.0) $int6 = 2_000_100_000; ``` 另见: [Integers](https://www.php.net/manual/en/language.types.integer.php) ### 字符串 Strings ```php echo 'this is a simple string'; ``` 查看: [Strings](https://dev.bi/docs/php.html#php-%E5%AD%97%E7%AC%A6%E4%B8%B2) ### 数组 Arrays ```php $arr = array("hello", "world", "!"); ``` 查看: [Arrays](https://dev.bi/docs/php.html#php-%E6%95%B0%E7%BB%84) ### 浮点数 Float (Double) ```php $float1 = 1.234; $float2 = 1.2e7; $float3 = 7E-10; $float4 = 1_234.567; // as of PHP 7.4.0 var_dump($float4); // float(1234.567) $float5 = 1 + "10.5"; # => 11.5 $float6 = 1 + "-1.3e3"; # => -1299 ``` ### Null ```php $a = null; $b = 'Hello php!'; echo $a ?? 'a is unset'; # => a is unset echo $b ?? 'b is unset'; # => Hello php $a = array(); $a == null # => true $a === null # => false is_null($a) # => false ``` ### 可迭代对象 Iterables ```php function bar(): iterable { return [1, 2, 3]; } function gen(): iterable { yield 1; yield 2; yield 3; } foreach (bar() as $value) { echo $value; # => 123 } ``` ## PHP 字符串 ### 字符串 String ```php # => '$String' $sgl_quotes = '$String'; # => 'This is a $String.' $dbl_quotes = "This is a $sgl_quotes."; # => a tab character. $escaped = "a \t tab character."; # => a slash and a t: \t $unescaped = 'a slash and a t: \t'; ``` ### 多行 Multi-line ```php $str = "foo"; // 未插值的多行 $nowdoc = <<<'END' Multi line string $str END; // 将执行字符串插值 $heredoc = <<<END Multi line $str END; ``` ### 操作 Manipulation ```php $s = "Hello Phper"; echo strlen($s); # => 11 echo substr($s, 0, 3); # => Hel echo substr($s, 1); # => ello Phper echo substr($s, -4, 3);# => hpe echo strtoupper($s); # => HELLO PHPER echo strtolower($s); # => hello phper echo strpos($s, "l"); # => 2 var_dump(strpos($s, "L")); # => false ``` 另见: [字符串函数](https://www.php.net/manual/en/ref.strings.php) ## PHP 数组 ### 定义 ```php $a1 = ["hello", "world", "!"] $a2 = array("hello", "world", "!"); $a3 = explode(",", "apple,pear,peach"); ``` #### 混合 int 和 string 键 ```php $array = array( "foo" => "bar", "bar" => "foo", 100 => -100, -100 => 100, ); var_dump($array); ``` #### 短数组语法 ```php $array = [ "foo" => "bar", "bar" => "foo", ]; ``` ### 多阵列 ```php $multiArray = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; print_r($multiArray[0][0]) # => 1 print_r($multiArray[0][1]) # => 2 print_r($multiArray[0][2]) # => 3 ``` ### 多类型 ```php $array = array( "foo" => "bar", 42 => 24, "multi" => array( "dim" => array( "a" => "foo" ) ) ); # => string(3) "bar" var_dump($array["foo"]); # => int(24) var_dump($array[42]); # => string(3) "foo" var_dump($array["multi"]["dim"]["a"]); ``` ### 操作 ```php $arr = array(5 => 1, 12 => 2); $arr[] = 56; // 附加 $arr["x"] = 42; // 用键添加 sort($arr); // 排序 unset($arr[5]); // 消除 unset($arr); // 移除所有 ``` 查看: [数组函数](https://www.php.net/manual/en/ref.array.php) ### 索引迭代 ```php $array = array('a', 'b', 'c'); $count = count($array); for ($i = 0; $i < $count; $i++) { echo "i:{$i}, v:{$array[$i]}\n"; } ``` ### 价值迭代 ```php $colors = array('red', 'blue', 'green'); foreach ($colors as $color) { echo "Do you like $color?\n"; } ``` ### 关键迭代 ```php $arr = ["foo" => "bar", "bar" => "foo"]; foreach ( $arr as $key => $value ) { echo "key: " . $key . "\n"; echo "val: {$arr[$key]}\n"; } ``` ### 串联阵列 ```php $a = [1, 2]; $b = [3, 4]; // PHP 7.4 以后 # => [1, 2, 3, 4] $result = [...$a, ...$b]; ``` ### Into 函数 ```php $array = [1, 2]; function foo(int $a, int $b) { echo $a; # => 1 echo $b; # => 2 } foo(...$array); ``` ### Splat运算符 ```php function foo($first, ...$other) { var_dump($first); # => a var_dump($other); # => ['b', 'c'] } foo('a', 'b', 'c' /*, ...*/ ); // 或 function foo($first, string ...$other){} ``` ## PHP 运算符 ### 算术 | `+` | 添加 | | :--- | ---- | | `-` | 减法 | | `*` | 乘法 | | `/` | 分配 | | `%` | 取模 | | `**` | 求幂 | ### 分配 | `a += b` | 如同`a = a + b` | | :------- | ---------------- | | `a -= b` | 如同`a = a – b` | | `a *= b` | 如同`a = a * b` | | `a /= b` | 如同`a = a / b` | | `a %= b` | 如同`a = a % b` | ### 比较 | `==` | 平等的 | | :---- | -------------- | | `===` | 完全相同的 | | `!=` | 不相等 | | `<>` | 不相等 | | `!==` | 不相同 | | `<` | 少于 | | `>` | 比...更棒 | | `<=` | 小于或等于 | | `>=` | 大于或等于 | | `<=>` | 小于/等于/大于 | ### 逻辑的 | `and` | 和 | | :---- | ------ | | `or` | 或者 | | `xor` | 独家或 | | `!` | 不是 | | `&&` | 和 | | ` | | ### 算术 ```php // 算术 $sum = 1 + 1; // 2 $difference = 2 - 1; // 1 $product = 2 * 2; // 4 $quotient = 2 / 1; // 2 // 速记算术 $num = 0; $num += 1; // 将 $num 增加 1 echo $num++; // 打印 1(评估后的增量) echo ++$num; // 打印 3(评估前的增量) $num /= $float; // 将商除并分配给 $num ``` ### 按位 | `&` | 和 | | :--- | ------------ | | \` | \` | | `^` | 异或(异或) | | `~` | 不是 | | `<<` | 左移 | | `>>` | 右移 | ## PHP 条件 ### If elseif else ```php $a = 10; $b = 20; if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ``` ### Switch ```php $x = 0; switch ($x) { case '0': print "it's zero"; break; case 'two': case 'three': // do something break; default: // do something } ``` ### 三元运算符 ```php # => Does print (false ? 'Not' : 'Does'); $x = false; # => Does print($x ?: 'Does'); $a = null; $b = 'Does print'; # => a is unsert echo $a ?? 'a is unset'; # => print echo $b ?? 'b is unset'; ``` ### 匹配 ```php $statusCode = 500; $message = match($statusCode) { 200, 300 => null, 400 => '未找到', 500 => '服务器错误', default => '已知状态码', }; echo $message; # => 服务器错误 ``` 查看: [Match](https://www.php.net/manual/en/control-structures.match.php) ### 匹配表达式 ```php $age = 23; $result = match (true) { $age >= 65 => 'senior', $age >= 25 => 'adult', $age >= 18 => 'young adult', default => 'kid', }; echo $result; # => young adult ``` ## PHP 循环 ### while 循环 ```php $i = 1; # => 12345 while ($i <= 5) { echo $i++; } ``` ### do while 循环 ```php $i = 1; # => 12345 do { echo $i++; } while ($i <= 5); ``` ### for i 循环 ```php # => 12345 for ($i = 1; $i <= 5; $i++) { echo $i; } ``` ### break 跳出循环 ```php # => 123 for ($i = 1; $i <= 5; $i++) { if ($i === 4) { break; } echo $i; } ``` ### continue 继续 ```php # => 1235 for ($i = 1; $i <= 5; $i++) { if ($i === 4) { continue; } echo $i; } ``` ### foreach 循环 ```php $a = ['foo' => 1, 'bar' => 2]; # => 12 foreach ($a as $k) { echo $k; } ``` 查看: [Array iteration](https://dev.bi/docs/php.html#%E5%85%B3%E9%94%AE%E8%BF%AD%E4%BB%A3) ## PHP 函数 ### 返回值 ```php function square($x) { return $x * $x; } echo square(4); # => 16 ``` ### 返回类型 ```php // 基本返回类型声明 function sum($a, $b): float {/*...*/} function get_item(): string {/*...*/} class C {} // 返回一个对象 function getC(): C { return new C; } ``` ### 可空返回类型 ```php // 在 PHP 7.1 中可用 function nullOrString(int $v) : ?string { return $v % 2 ? "odd" : null; } echo nullOrString(3); # => odd var_dump(nullOrString(4)); # => NULL ``` 查看: [Nullable types](https://www.php.net/manual/en/migration71.new-features.php) ### 无效函数 ```php // 在 PHP 7.1 中可用 function voidFunction(): void { echo 'Hello'; return; } voidFunction(); # => Hello ``` ### 变量函数 ```php function bar($arg = '') { echo "In bar(); arg: '$arg'.\n"; } $func = 'bar'; $func('test'); # => In bar(); arg: test ``` ### 匿名函数 ```php $greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); # => Hello World $greet('PHP'); # => Hello PHP ``` ### 递归函数 ```php function recursion($x) { if ($x < 5) { echo "$x"; recursion($x + 1); } } recursion(1); # => 1234 ``` ### 默认参数 ```php function coffee($type = "cappuccino") { return "Making a cup of $type.\n"; } # => 制作一杯卡布奇诺 echo coffee(); # => 制作一杯 echo coffee(null); # => 制作一杯浓缩咖啡 echo coffee("espresso"); ``` ### 箭头函数 ```php $y = 1; $fn1 = fn($x) => $x + $y; // 相当于按值使用 $y: $fn2 = function ($x) use ($y) { return $x + $y; }; echo $fn1(5); # => 6 echo $fn2(5); # => 6 ``` ## PHP 类 ### 构造函数 Constructor ```php class Student { public function __construct($name) { $this->name = $name; } public function print() { echo "Name: " . $this->name; } } $alex = new Student("Alex"); $alex->print(); # => Name: Alex ``` ### 继承 Inheritance ```php class ExtendClass extends SimpleClass { // 重新定义父方法 function displayVar() { echo "Extending class\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar(); ``` ### 类变量 Classes variables ```php class MyClass { const MY_CONST = 'value'; static $staticVar = 'static'; // 可见度 public static $var1 = 'pubs'; // 仅限类 private static $var2 = 'pris'; // 类和子类 protected static $var3 = 'pros'; // 类和子类 protected $var6 = 'pro'; // 仅限类 private $var7 = 'pri'; } ``` 静态访问 ```php echo MyClass::MY_CONST; # => value echo MyClass::$staticVar; # => static ``` ### 魔术方法 ```php class MyClass { // 对象被视为字符串 public function __toString() { return $property; } // 与 __construct() 相反 public function __destruct() { print "Destroying"; } } ``` ### 接口 ```php interface Foo { public function doSomething(); } interface Bar { public function doSomethingElse(); } class Cls implements Foo, Bar { public function doSomething() {} public function doSomethingElse() {} } ``` ## 各种各样的 ### 基本错误处理 ```php try { // 做一点事 } catch (Exception $e) { // 处理异常 } finally { echo "Always print!"; } ``` ### PHP 8.0 中的异常 ```php $nullableValue = null; try { $value = $nullableValue ?? throw new InvalidArgumentException(); } catch (InvalidArgumentException) { // 变量是可选的 // 处理我的异常 echo "print me!"; } ``` ### 自定义异常 ```php class MyException extends Exception { // 做一点事 } ``` 用法 ```php try { $condition = true; if ($condition) { throw new MyException('bala'); } } catch (MyException $e) { // 处理我的异常 } ``` ### Nullsafe 运算符 ```php // 从 PHP 8.0.0 开始,这一行: $result = $repo?->getUser(5)?->name; // 相当于下面的代码: if (is_null($repo)) { $result = null; } else { $user = $repository->getUser(5); if (is_null($user)) { $result = null; } else { $result = $user->name; } } ``` 另见: [Nullsafe 运算符](https://wiki.php.net/rfc/nullsafe_operator) ### 常用表达 ```php $str = "Visit jaywcjlove.github.io"; echo preg_match("/qu/i", $str); # => 1 ``` 查看: [PHP中的正则表达式](https://dev.bi/docs/regex.html#php%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F) ### fopen() 模式 | `r` | 读 | | :--- | ---------- | | `r+` | 读写,前置 | | `w` | 写入,截断 | | `w+` | 读写,截断 | | `a` | 写,追加 | | `a+` | 读写,追加 | ### 运行时定义的常量 ```php define("CURRENT_DATE", date('Y-m-d')); // 一种可能的表示 echo CURRENT_DATE; # => 2021-01-05 # => CURRENT_DATE is: 2021-01-05 echo 'CURRENT_DATE is: ' . CURRENT_DATE; ``` ## 另见 * [PHP 官方中文文档](https://www.php.net/manual/zh/index.php) *(php.net)* * [Learn X in Y minutes](https://learnxinyminutes.com/docs/zh-cn/php-cn/) *(learnxinyminutes.com)* 最后修改:2024 年 07 月 24 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏