PHP运算符(第2部分)
介绍
PHP中的运算符是一个广泛的主题,并非总是被人们完全理解。
所有这些误解的原因之一是,某些运算符非常简单,可以在阅读完有关它们后的几秒钟内在代码中实现,
代替其他人,
几乎未知,一旦研究,最好还是谨慎地使用它们。
尽管运算符属于“语言基础”类别,但是很难识别它们的误用或打字时的错字。
仅尝试调试一些代码,然后发现插入了相等符号而不是不相等符号,可能会浪费半个多小时。
个人经历(叹气)。
在我之前的博客文章中发现了PHP运算符的主要类型之后 。
在下面,您将看到参考运算符,赋值运算符和一些可用来打动同事的东西。
适用于专家开发人员的PHP基础
这篇博客文章是“ 面向专家开发人员的PHP基础 ”系列文章的一部分。
在本系列中,您将学习PHP的基础知识,但您还将看到许多小技巧和功能,这些技巧和功能只有在书籍和高级教程中才能找到。
根据您的级别,您可能只想偶尔阅读它们或完全跳过它们。
您不必学习这里写的所有内容!
简单阅读,即可发现存在某些功能或技术,并在准备下一个级别时返回这些页面。
面向专业Web开发人员的PHP基础知识(1篇)
PHP 7的构造和注释
如何使用变量(PHP 7)
PHP中的复合变量(数组,对象等)
PHP运算符(第1部分)
PHP运算符(第2部分)
此外,此博客文章分为几个主要部分
指派运算子
参考运算符
比较运算符
错误控制运算符
反引号运算符
结论
指派运算子
正如您在上一章中所看到的,
除非您需要空或空变量,否则每个变量都应有一个值。
但是我们如何为变量赋值呢?
为了给变量赋值,PHP向Web开发人员提供了许多称为赋值运算符的运算符。
他们以等号“ =”为基础。
语法包括三个因素:
第一个是变量名称,由变量名表示,中间是赋值运算符,语句的第三个元素是可以是不同类型的值。
这是一个例子:
$ variable =“这是一个字符串”;
赋值运算符可以与任何其他二进制和算术运算符结合使用,从而使程序员可以更快地编写代码并更易于阅读。
以下是复合赋值运算符的一些示例:
$sum = 1 + 1; $sum += 100;
// this is equal to $sum = $sum + 100;
// $sum is equal to 102;
$string = "My name is:";
$string .= "Nico";
// this is equal to $string = $string . "Nico";
// $string is equal to "My name is Nico
一个常见的错误,甚至是经验丰富的程序员也必须始终注意的事情是,当它们表示相等的运算符“ ==”时,编写赋值运算符。
只是想像if语句那样在共识中错误地使用了后者,
$var = "Hello";
if ($var = "Goodbye") {}
使用相等运算符时,此条件的结果为false,在这种情况下,变量$ var被正确分配了新值“ Goodbye”,因此PHP解析器将条件评估为true。
避免某些专家使用此错误的技术是所谓的Yoda条件 ,
该约定利用了以下事实:PHP不允许您更改常量的值,
如果在条件的左侧放置一个常量,则在编写代码时出错时,PHP将发出警告。
尽管已证明该技术可行,但在可读性和个人风格的条件下,由您决定是否值得使用。
参考运算符
这是我在掌握语言的过程中遇到的最奇怪和最难理解的符号之一(距离符号还很远)。
在PHP中,有两种不同的方法可以对变量使用赋值,
按价值或参考。
默认情况下, 所有标量值均按值分配,
如果要通过引用分配标量值,则可以使用符号=&
$firstPerson = "Nico";
$secondPerson =& $firstPerson;
$secondPerson = "John";
echo $firstPerson;
// The value echoed out will be "John" instead of "Nico"
对于物体
恰恰相反,
所有对象总是按引用分配,
如果尝试使用PHP对象的=&符号,它将引发错误。
困惑?
这是解释,
之所以会出现这种差异,是因为经过多年的开发和改进,PHP已优化了此过程,从而使变量的分配尽可能快。
这可以通过使用名为zval的容器来实现。
Zval由四个部分组成:
值,类型,Is_ref和Refcout。
该容器包含变量的所有信息,例如长度,大小,在内存中的确切位置。
当我们通过引用调用值时,我们将指示包含其值的确切元素。
比较运算符
上课时间……
一等于一吗?
停一分钟,然后用PHP编写最后一句话,
做完了吗
让我们看看结果。
为了执行前面的操作,您需要称为比较运算符的PHP功能。
确切地说,此类别中有9个元素,它们都很容易学习。
事实上,
您已经从小学中学到了很多。
要进行比较,您需要一个符号和两个元素来比较放置在符号旁边的每个元素:
这里是运算符:
大于:符号>
为了使条件成立,左边的元素必须大于右边的元素(这不仅适用于数字,而且对于考虑字母位置和大写字母都小于小写字母的字符串)。
大于或等于:符号> =
足够的解释权吗?
小于:符号<
与“大于”完全相反
小于或等于:符号<=
与大于或等于相反
不等于:符号<>
确实,两个值必须不同
等效:符号==
确实,这两个值不得相同
身份:符号===
确实,这两个值不仅必须具有相同的值,而且必须具有相同的类型
$int = 123;
$str = "123";
($int === $str)
// the result of this condition is false because although the values are equal the two types of variable are different
不等价:符号!=
见<>
不相同:符号!==
以某种方式,可以使用相同的运算符===来标识该对象,
如果我们正在比较的两个元素的值不同且类型不同,则此语句的结果为true。
请注意,如果两个元素具有相同的值,但是它们属于两种不同的类型,则它们是不相同的。
如果两个值属于同一类型,但没有两个相等的值,则会发生相同的情况。
额外的运营商
这里有两个不常出现的运算符,以及该系列之所以被称为“ 专家级Web开发人员的PHP基础 ”的原因。
错误控制运算符
您见过@运算符吗?
这称为错误控制运算符,用于抑制PHP中的错误。
现在,
您可以想象, 隐藏错误不是一种好的做法,它会使调试过程成倍增加。
那为什么要使用这个运算符呢?
让我们举个例子
不久前,我发表了几篇文章,描述了PHP 7.3的新功能和不推荐使用的内容 。
该编程语言的最后版本和先前版本之间的差异之一涉及preg_match()函数和该函数需要作为参数之一的正则表达式。
如果您在应用程序中大量使用了此功能,并且仍然希望将代码更新为PHP7.3,而不是处理所有将要发生的错误,则只需禁用这些错误,
将服务器更新到新版本的PHP,并一步一步修复错误。
请注意,仅当所讨论的函数使用的库使用PHP标准错误报告时,此运算符才有效。
当然,
我不建议您这样做,但是我在这里告诉您此选项存在。
这是一篇有关Xdebug的作者Derick Rethans撰写的主题的文章,虽然年代久远,但仍是话题性的。
由您决定是否以及如何使用它。
这是语法示例:
$db = @mysqli_connect();
// Even if there will be an error with the connection no errors will be displayed
反引号运算符
另一个很少使用的运算符是称为“反引号运算符”的运算符。
使用此运算符等同于使用shell_exec()命令,
它通过外壳执行作为字符串作为参数所需的命令,如果成功执行,则返回字符串本身。
echo `touch index.php`;
// this command is equal to shell_exec('touch index.php');
我可以给您的建议,请谨慎使用这两个命令,
由于我们在谈论文件系统上的操作,因此理解这些命令的破坏力并不需要天才。
小心使用
消毒文本,最重要的是,切勿使用外部输入,例如用户输入的字符串作为参数。
结论
我敢打赌你感到不知所措? 是不是
这是正常的。
太多的信息加在一起可能会产生这种影响。
正如我在本系列文章中多次写道的那样,我认为不必一次学习所有内容。
其实,
我认为,一旦您阅读了本主题,就应该花点时间将其吸收。
别弄错我的意思,
其中一些运算符一点也不难,我认为在您阅读完这篇文章后立即使用它们很重要。
对于其他人,嗯。
相反,您很少使用它们,而是遵循最佳实践,最好不要使用它们。
我认为给您的一个重要建议是,请记下该帖子(如果愿意,可以将其添加为书签),然后再次阅读并复习几周后的内容。
分析您使用最多的运算符和根本不使用的运算符。
然后检查这些页面中描述的一些运算符是否可以简化您最近几周使用的脚本。
在这里,你有它!
您刚刚发现了学习和正确实现 PHP的每个新旧功能的秘诀 。
…
现在您已经了解了基础知识,是时候开始练习了,
充分利用Blue Host的功能和速度,创建一个帐户,您可以在每月不超过星巴克Caffe Mocha的实时服务器上进行锻炼并查看改进情况。
(这是一个会员链接,价格对您而言保持不变,这有助于我改善此内容。)
最初发布在 anastasionico.uk 。
From: https://hackernoon.com/php-operators-part-2-85f39530994b