PHP之道---PHP基础知识(译)
原文:PHP: The Right Way - The Basics 译者:youngsterxyf 比较操作符 比较操作符往往是PHP的一个被忽视的方面,这会导致很多意想不到的结果。其中的一个问题源于严格比较(布尔值为整数的比较)。 ?php$a = 5; // 5为一个整数var_dump($a == 5); // 比较
原文:PHP: The Right Way - The Basics
译者:youngsterxyf
比较操作符
比较操作符往往是PHP的一个被忽视的方面,这会导致很多意想不到的结果。其中的一个问题源于严格比较(布尔值为整数的比较)。
<?php $a = 5; // 5为一个整数 var_dump($a == 5); // 比较值;返回true var_dump($a == '5'); // 比较值(忽略类型);返回true var_dump($a === 5); // 比较类型/值(整数 vs. 整数);返回true var_dump($a === '5'); // 比较类型/值(整数 vs. 整数);返回false /** * 严格比较 */ if (strpos('testing', 'test')) { // 在位置0找到'test',0被解释为布尔值'false' // code... } vs. if (strpos('testing', 'test') !== false) { // true,因为做了严格比较(0 !== false) // code... } ?>
- 比较操作符
- 比较列表
条件语句
If语句
在函数或类中使用'if/else'之时,有个常见的误解---'else'必须一起使用以声明潜在的结果。然而,如果,结果是定义返回值,则'else'是不需要的,因为'return'会结束函数,使得'else'变得毫无意义。
<?php function test($a) { if ($a) { return true; } else { return false; } } vs. function test($a) { if ($a) { return true; } return false; // 不需要else分支 } ?>
- If语句
Switch语句
Switch语句是一种避免输入无穷尽的if和elseif的绝妙方式,但需要注意几点:
- Switch语句仅比较值,并不关心类型(等价于'==')
- 逐个分支地迭代直到找到一个匹配项。如果没找到匹配项,则使用缺省(default)分支(如果定义了)
- 若匹配项的代码体没有'break'语句,则会继续执行接下来的每个分支,直到遇到一个break/return语句
-
在函数内,使用'return'可以减少'break'的使用,因为'return'能够结束函数
<?php $answer = test(2); // 'case 2'和'case3'的代码体会得到执行 function test($a) { switch ($a) { case 1: // code... break; // break用于结束switch语句 case 2: // code... // 没有break,继续比较'case 3' case 3: // code... return $result; // 当前位置在函数内,'return'会结束函数 default: // code... return $error; } } ?>
로그인 후 복사 -
Switch语句
- PHP switch
全局命名空间
使用命名空间之时,你可能发现内置函数被你所写的函数覆盖了。推荐在全局函数的函数名之前添加一个反斜杠来修正这个问题。
<?php namespace phptherightway; function fopen() { $file = \fopen(); // 我们的函数名与内部函数的函数名相同。 // 通过添加'\'指定从全局命名空间执行函数 } function array() { $iterator = new \ArrayIterator(); // ArrayIterator是一个内置类。 // 若类名之前没有一个反斜杠,解释器会试图在你的命名空间中解析它 } ?>
- 全局命名空间
- 全局规则
字符串
拼接
- 如果代码行超过了推荐的行长度(120个字符),那么应该考虑拼接代码行
- 为了便于阅读,最好使用拼接操作符而不是拼接赋值操作符
-
在变量原本的命名空间内,当拼接使用了新行,则应该缩进
<?php $a = 'Multi-line example'; // 拼接赋值操作符(.=) $a .= "\n"; $a .= 'of what not to do'; vs. $a = 'Multi-line example' // 拼接操作符(.) . "\n" // 缩进新行 . 'of what to do'; ?>
로그인 후 복사 -
字符串操作符
字符串类型
字符串类型在PHP社区内是个不变的特性,但希望本节内容能够解释清楚字符串类型之间的区别以及各自的好处/用法。
单引号
单引号是创建字符串最简单的方式,并且通常执行速度也是最快的,因为PHP不会解析这种字符串(不解析其中是否存在变量),所以单引号最适用于:
- 不需要解析的字符串
-
将变量写为纯文本值(Writing of a variable into plain text)
<?php echo 'This is my string, look at how pretty it is.'; //不需要解析一个简单的字符串 /** * 输出: * * This is my string, look at how pretty it is. */ ?>
로그인 후 복사 -
单引号
双引号
双引号是字符串处理的瑞士军刀,但执行速度比较慢,因为字符串要经过解析。双引号最适用于:
- 转义字符串
- 内含多个变量和纯文本的字符串
- 压缩多行拼接,提高可读性
<?php echo 'phptherightway is ' . $adjective . '.' // 一个单引号的使用示例, . "\n" // 为变量和转义字符串使用了多行拼接 . 'I love learning ' . $code . '!'; vs. echo "phptherightway is $adjective.\n I love learning $code!"; // 没有使用多行拼接, ?> // 双引号允许我们使用可解析的字符串
로그인 후 복사
使用双引号创建的字符串中包含变量时,经常出现变量名与后面另一个字符相接触的情况,从而导致PHP不解析该变量,因为它被"伪装"起来了。为了解决这个问题,可以使用一对大括号把变量包围起来。
<?php $juice = 'plum'; echo "I drank some juice made of $juices"; // $juice得不到解析 vs. $juice = 'plum'; echo "I drank some juice made of{$juice}s"; // $juice得到解析 /** * 大括号内的复杂变量也能得到解析 */ $juice = array('apple', 'orange', 'plum'); echo "I drank some juice made of {$juice[1]}s"; // $juice[1]将得到解析 ?>
- 双引号
Nowdoc语法
PHP 5.3引入了Nowdoc语法,其行为与单引号相同,除了她适用于多行字符串的使用,而不需要拼接。
<?php $str = <<<'EOD' // 通过<<<初始化 Example of string spanning multiple lines using nowdoc syntax. $a does not parse. EOD; // 'EOD'关闭符必须单独一行,并且处于最左边 /** * 输出: * * Example of string * spanning multiple lines * using nowdoc syntax. * $a does not parse. */ ?>
- Nowdoc语法
Heredoc语法
Heredoc语法的行为与双引号相同,除了它适用于多行字符串的使用,而不需要拼接。
<?php $a = 'Variables'; $str = <<<EOD // 使用<<<初始化 Example of string spanning multiple lines using heredoc syntax. $a are parsed. EOD; // 'EOD'关闭符必须单独一行,且处于最左边位置 /** * 输出: * * Example of string * spanning multiple lines * using heredoc syntax. * Variables are parsed. */ ?>
- Heredoc语法
三元操作符
三元操作符是一种压缩代码的好方式,但经常被滥用。当需要多层或嵌套使用三元操作符时,建议一行代码仅使用一次三元操作符以提高代码可读性。
<?php $a = 5; echo ($a == 5) ? 'yay' : 'nay'; vs. // 嵌套三元操作符 $b = 10; echo ($a) ? ($a == 5) ? 'yay' : 'nay' : ($b == 10) ? 'excessive' : ':('; // 过度嵌套,牺牲了可读性 ?>
使用三元操作符'返回'一个值需使用正确的语法。
<?php $a = 5; echo ($a == 5) ? return true : return false; // 这个例子会抛出错误 vs. $a = 5; return ($a == 5) ? 'yay' : 'nope'; // 这个例子会返回'yay' ?>
- 三元操作符
变量声明
有时,程序员会试图通过将预定义变量声明为一个不同的名字使得代码更加"干净"。事实上,这样会让脚本的内存消耗加倍。如下例子,我们假设一个示例文本字符串包含1MB的数据,通过拷贝这个变量,脚本执行时就会增加到2MB。
<?php $about = 'A very long string of text'; // 使用了2MB内存 echo $about; vs. echo 'A very long string of text'; // 仅使用1MB内存 ?>
- 性能技巧
原文地址:PHP之道---PHP基础知识(译), 感谢原作者分享。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
