PHP 编程/基础知识
此示例使用数学表达式中使用的五个基本 **运算符**。 这些是 PHP 中执行的所有数学和字符串操作的基础。
+ |
- |
* |
/ |
=
|
加 | 减 | 乘 | 除 | 赋值 |
五个数学运算符的功能与 C++ 和 Java 中的运算符完全相同
<?php
$x = 25;
$y = 10;
$z = $x + $y;
echo $z;
echo "<br />";
$z = $x/$y;
echo $z;
echo "<br />";
$z = $y*$y*$x;
echo $z - 1250;
echo "<br />";
?>
35<br />2.5<br />1250<br />
35 2.5 1250
echo "<br />";
352.51250
这当然不是预期结果。
有两种代码选项执行与赋值 (=
) 运算符相反的操作。 关键字 null
应用于变量置空,实际上是在赋值运算符 (=
) 中使用它来代替值。 如果你想销毁一个变量,可以使用 unset()
语言结构。
$variable = null;
或者
unset($variable);
除此之外,可以使用字母“e”引入 10 的幂
print 2e1; // 20
print 4e-3; // 0.004
数字格式化由 number_format()
实现:小数位数、小数点分隔符和千位分隔符。 例如
print number_format(3333.333333, 2, ',', ' '); // 3 333,33
此示例演示了连接运算符 (.
),它将两个字符串连接在一起,生成一个包含两个部分的字符串。 它类似于 C++ 字符串类 (见 STL)、Java、JavaScript、Python 实现中的加号 (+
) 运算符。
$string = $string . " " . "All the cool kids are doing it.";
$string
的当前值(即“PHP 很棒且很棒。”)附加到文字字符串“所有酷孩子都在做。”,并将此新字符串分配给 $string
。
<?php
$string = "PHP is wonderful and great.";
$string = $string . " " . "All the cool kids are doing it.";
echo $string;
?>
PHP is wonderful and great. All the cool kids are doing it.
众所周知,或者对于那些刚接触编程的人来说很快就会发现,程序员总是寻找“更紧凑的代码”。 简而言之,我们以最少的按键完成最多的工作而自豪。 考虑到这一点,这里有一个技巧可以节省宝贵的按键:同时连接和分配。 很容易。 让我们以与上面相同的示例为例。
<?php
$string = "PHP is wonderful and great.";
$string .= " " . "All the cool kids are doing it.";
echo $string;
?>
PHP is wonderful and great. All the cool kids are doing it.
您只需使用完全相同的输出即可节省 8 个按键。 没什么大不了的? 想象一下,我最近不得不使用 100 行模板代码来做。 是的,这很重要。 顺便说一句,如果您在不更改输出的情况下更改实现,则称为重构。 熟悉这个词。 你会经常用到它。 以下查看更多复合赋值的示例。
此代码段演示了自引用快捷运算符。 第一个这样的运算符是 ++
运算符,它将 $x
(使用后缀形式)递增 1
,使其值为 2
。 递增 $x
后,$y
被定义并分配了值 5
。
第二个快捷运算符是 *=
,它将 $y
赋值为 $y*$x
或 10
。
在将 $z
初始化为 180
后,后续行执行两个快捷操作。 根据运算顺序(见下文手册页面),$y
被递减(使用前缀形式)并除以 $z
。 $z
被分配给结果值 20
。
<?php
$x = 1;
$x++;
echo $x . " ";
$y = 5;
$y *= $x;
echo $y . " ";
$z = 180;
$z /= --$y;
echo $z;
?>
2 10 20
<?php
$x = 1;
$x = $x + 1;
echo $x . " ";
$y = 5;
$y = $y*$x;
echo $y . " ";
$z = 180;
$y = $y - 1;
$z = $z/$y;
echo $z;
?>
运算符是指表达式中用来操作数据的符号。PHP 中有七个基本运算符:
=
(赋值)+
(加)-
(减)*
(乘)/
(除)%
(取模).
(连接)
此外,每个运算符都可以与赋值操作组合使用,形成以下运算符:
+=
(加法赋值)-=
(减法赋值)*=
(乘法赋值)/=
(除法赋值)%=
(取模赋值).=
(连接赋值)
这些运算符用于将一个变量加上、减去、乘以或除以另一个值,然后将其赋值给自身。
$var = $var + 5;
与
$var += 5;
PHP 中还有增量和减量运算符。
++
(增量)--
(减量)
它们是加法和减法赋值运算符的特例。
$var = 0;
$var += 1;
echo "The incremented value is $var.\n";
$var -= 1;
echo "The decremented value is $var.\n";
The incremented value is 1. The decremented value is 0.
虽然这在 PHP 中是完全合法的,但对于像增量这样的常见操作来说,它有点冗长。它可以很容易地用增量运算符替换,从而缩短语句。
$var = 3;
$var++;
echo "The incremented value is $var.\n";
$var--;
echo "The decremented value is $var.\n";
The incremented value is 4. The decremented value is 3.
要更深入地了解 PHP 的运算符,包括对位运算符的解释,请参考下面的手册链接。
优先级决定了在语句中执行某些运算符的优先级。如果一个运算符具有更高的优先级,并不意味着它更重要;相反的情况经常发生。
- 结合性
当多个运算符出现且具有相同的优先级(无论是同一个运算符的多个实例,还是只是具有相同优先级的不同运算符)时,考虑结合性就很重要:是向右(向左)、向左(向右)还是非结合性。
- 结合性无关紧要的示例
在某些情况下(如下面的示例所示),尤其是当存在相同的运算符时,结合性可能对结果没有影响。
以下...
$a = 5*2*3*4; // Equals 120
...具有左结合性,等效于
$a = (((5*2)*3)*4); // Equals 120
但是,在这种情况下,右结合性会产生相同的结果。
$a = (5*(2*(3*4))); // Would also equal 120
- 结合性在 PHP 中相关(但在数学中不相关)的示例
在数学中,对于具有相同优先级的运算符,可能认为按哪个方向执行计算无关紧要。
例如,以下...
$a = 5 + 3 - 2 + 8; // Equals 14
...等效于此(左结合)语句
$a = (((5 + 3) - 2) + 8); // Equals 14
而且,如果按照人类在数学计算中的惯例来考虑,以下等效的右结合表达式将产生相同的结果
$a = (5 + (3 + (-2 + 8))); // Would also equal 14
但是,由于我们处理的是一种线性计算机语言,它不知道将“2
”转换为负数并将其与“8
”分组,然后将其加到“3
”(然后加到“5
”),因此如果 PHP 要以严格的右结合方式执行以下表达式,将会出现以下(错误的)结果
$a = (5 + (3 - (2 + 8))); // Would equal -2
因此,结合性是相关的,应该记住(尽管通常最好将分组显式地说明出来——既可以避免错误,又可以提高代码的可读性,方便其他人查看代码)。
类似的问题发生在乘法和除法上。尽管按照人类的惯例,所有相邻的乘法和除法组都将在分子级别进行乘法运算,在分母级别进行除法运算,但 PHP 解释器不知道这样做,因此它将设置左(向右)约定,除非已进行显式分组(通过括号——具有最高优先级)。
$a = 5*4/2*3; // Equals 30
这等效于左结合的
$a = (((5*4)/2)*3); // Also equals 30
但是,与上面的加法/减法示例一样,以右结合性(严格的线性反向方式)执行此操作不会产生相同(预期的)结果
$a = (5*(4/(2*3))); // Equals 3.33333
下面的两个示例都使用 **换行符**(\n
、\r\n
或 \r
,基于操作系统)来表示当前行的结束和新行的开始。
注意:在 echo 语句中,字符串中出现 \n
的地方,输出中就会出现换行。但是,当在 Web 浏览器中显示 HTML 文档时,\n
不会产生换行符。这是因为 PHP 引擎不会渲染脚本。相反,PHP 引擎输出 HTML 代码,随后由 Web 浏览器渲染。PHP 脚本中的换行符 \n
将变为 HTML 空格,Web 浏览器在渲染时会跳过空格(就像 PHP 引擎在生成 HTML 时会跳过 PHP 脚本中的空格一样)。这并不意味着 \n
运算符没有用;它可以用来在 HTML 中添加空格,因此如果有人查看 PHP 脚本生成的 HTML,他们会更容易阅读。
要插入 Web 浏览器将渲染的换行符,必须使用 <br />
标签来换行。
注意:换行符对于 Linux/Unix 系统是 \n
,对于 Windows 是 \r\n
,对于 Mac 是 \r
(直到 1996 年,基于 Linux 的 MkLinux 上市)。
echo 'PHP is cool,<br />awesome<br />and great.';
nl2br()
函数可用于自动将字符串中的换行符转换为 <br />
标签。
$string = "This\ntext\nbreaks\nlines.";
$string = nl2br($string);
print $string;
This<br /> text<br /> breaks<br /> lines.
This text breaks lines.
其他特殊字符包括 ASCII NUL
(\0
)——用于填充二进制文件,**制表符**(\t
)——用于显示标准制表符,以及 return
(\r
)——表示回车。同样,这些字符不会改变 HTML 的渲染,因为它们在 HTML 源代码中添加空格。要使制表符和回车符在最终的网页中渲染,应该使用 &tab;
表示制表符,使用 <br />
表示回车。
PHP 有一个函数集用于获取输入。如果您使用的是标准输入(例如来自命令行的输入),则使用基本的输入函数获取它。
$mystring = fgets($stdin);
或者
$stdin = fopen('php://stdin', 'r'); // opens standard input $line = fgets($stdin); // reads until user presses ENTER
在 Web 服务器上,发送到 PHP 应用程序的信息可能是 GET 操作或 POST 操作。
对于 GET 操作,参数通过地址栏发送。地址栏中的参数可以通过访问 $_GET['parameter']
获取。对于 POST 操作,提交的输入可以通过 $_POST['parameter']
访问。
一个更通用的数组 $_REQUEST['parameter']
包含 $_GET
、$_POST
和 $_COOKIE
的内容。