表达式是PHP 最重要的基石。在 PHP 中,几乎你所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“anything that has a value”。
最基本的表达式形式是常量和变量。当你键入“$a = 5”,即将值 '5' 分配给变量 $a。'5',很明显,值为 5,换句话说 '5' 是一个值为5的表达式(既然如此,'5' 是一个整型常量)。
赋值之后,你所盼望的情况是 $a 的值为5,因而如果你写下 $b = $a,期望的是它犹如 $b = 5 一样。换句话说,$a 是一个值也为 5 的表达式。如果一切运行正确,那这正是将要发生的正确结果。
稍微复杂的表达式例子就是函数。例如,考虑下面的函数:
<?phpfunction foo (){ return 5;}?> |
假定你已经熟悉了函数的概念(如果不是的话,请看一下函数的相关章节),那么键入 $c = foo() 从本质上来说就如写下 $c = 5,而且你是正确的。 函数也是表达式,表达式的值即为它们的返回值。既然 foo() 返回5,表达式 ‘foo()’ 的值也是5。通常函数不会仅仅返回一个静态值,而可能会计算一些东西。
当然,PHP 中的值常常并非是整型的。PHP 支持三种标量值类型:整型值,浮点值和字符串值(标量值不能拆分为更小的单元,比如:数组)。PHP 也支持两种复合类型:数组和对象。这两种类型具可以赋值给变量或者从函数返回。
到目前为止,PHP/FI 2 的用户不应该感到任何的变化。然而,当许多其它语言为之努力的时候,PHP 在相同道路上促进了表达式的成长。PHP 是一种面向表达式的语言,从这一方面来讲几乎一切都是表达式。考虑刚才我们已经研究过的例子,“$a = 5”。可以轻松的看到这里有两个相关的值,整型常量 5,而且变量 $a 的值也被更新为 5。但是事实是:这里只有一个相关的附加值,即被分配的值本身。赋值操作计算需分配的值,即 5。实际上,意味着“$a = 5”,不必管它是做什么的,是一个值为 5 的表达式。因而,一些像这样的代码“$b = ($a = 5)”和“$a =5; $b=5”(分号标志着语句的结束)。因为赋值操作的顺序是由右到左的,你也可以这么写“$b = $a =5”。
另外一个很好的面向表达式的例子就是前、后递增和递减。PHP/FI 2 和多数其它语言的用户应该比较熟悉变量 ++ 和变量 -- 符号。即递增和递减操作符。在 PHP/FI 2 中,语句“$a++”没有值(不是表达式),这样的话你便不能为其赋值或者以任何其它方式来使用它。PHP 通过将其变为了表达式,类似 C 语言,增强了递增/递减的能力。在 PHP 和 C 语言 中,有两种类型的递增前递增和后递增,本质上来讲,前递增和后递增均增加了变量的值,并且对于变量的影响是相同的。不同的是递增表达式的值。前递增,写做“++$variable”,求增加后的值(PHP 在读取变量的值之前,增加变量的值,因而称之为“前递增”)。后递增,写做‘$variable++’,求变量未递增之前的原始值(PHP 在读取变量的值之后,增加变量的值,因而叫做‘后递增’)。【译者注:前递增,++$a,则该表达式的值加 1;后递增,$a++,则该表达式的值不变。】
一个常用到表达式类型是比较表达式。这些表达式求值 0 或者 1,即 FALSE 或者 TRUE(分别的)。PHP 支持 >(大于),>=(大于等于),==(等于),!=(不等于),
这里,我们将要研究的最后一个例子是组合的赋值操作符表达式。你已经知道如果想要为变量 $a 加1,可以简单的写‘$a++’或者‘++$a’。但是如果你想为变量增加大于 1 的值,比如 3,该怎么做?你可以多次写‘$a++’,但这样明显不是一种高效舒适的方法,一个更加通用的做法是‘$a = $a + 3’。‘$a + 3’ 计算 $a 加上 3 的值,并且得到的值重新赋予变量 $a,于是 $a 的值增加了3。在 PHP 及其它几种类似 C 的语言中,你可以以一种更加简短的形式完成上述功能,因而也更加清楚快捷。为 $a 的当前值加 3,可以这样写:$a += 3。这里的意思是“取变量 $a 的值,加 3,得到的结果再次分配给变量 $a”。除了更简略和清楚外,也可以更快的运行。‘$a += 3’的值,如同一个正常赋值操作的值,是赋值后的值。注意它不是 3,而是 $a 加上3的组合值(即已经分配给 $a 的值)【译者注:这里表达式‘$a += 3’的值是什么呢?不是 3,也不是 $a 的原始值,而是完成 +3 操作后变量 $a 的值】。 任何两位操作符都可以使用在复制操作符模式,例如‘$a -= 5’(从变量 $a 的值中减去 5),‘$b *= 7’ (变量 $b 乘以 7),等等。
有一些表达式,如果你没有在别的语言中看到过的话,可能认为它们是多余的,如三重操作符:
$first ? $second : $third |
如果第一个子表达式的值是 TRUE(非零),那么计算第二个子表达式的值,其值即为整个表达式的值。否则,将是第三个子表达式的值。
下面的例子一般来说应该可以稍微帮你理解前、后递增和表达式:
<?phpfunction double($i){ return $i*2;}$b = $a = 5; /* assign the value five into the variable $a and $b */$c = $a++; /* post-increment, assign original value of $a (5) to $c */$e = $d = ++$b; /* pre-increment, assign the incremented value of $b (6) to $d and $e *//* at this point, both $d and $e are equal to 6 */$f = double($d++); /* assign twice the value of $d before the increment, 2*6 = 12 to $f */$g = double(++$e); /* assign twice the value of $e after the increment, 2*7 = 14 to $g */$h = $g += 10; /* first, $g is incremented by 10 and ends with the value of 24. the value of the assignment (24) is then assigned into $h, and $h ends with the value of 24 as well. */?> |
在本章的开始,我们说过我们将会描述多种语句类型,并且如同许诺的那样,表达式可以是语句。尽管如此,不是每个表达式都是一个语句。而这样的话,一个语句,它的形式是 'expr' ';',一个表达式有一个分号结尾。在‘$b=$a=5;’,$a = 5 是一个有效的表达式,但是它却不是一个语句。‘$b=$a=5;’ 却是一个有效的语句。
最后一件值得提起的事情就是表达式的真实值。在许多事件中,大体上主要是在条件执行和循环中,不要专注于表达式中明确的值,反而要注意表达式的值是否是 TRUE 或者 FALSE。常量 TRUE 和 FALSE (大小写无关)是两种可能的 Boolean 值。如果有必要,一个表达式将自动转换为 Boolean。
PHP 提供了一套完整强大的表达式,而为它提供完整的文件资料已经超出了本手册的范围。上面的例子应该为你提供了一个好的关于什么是表达式和怎样构建一个有用的表达式的概念。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。