PHP中的表达式

Jun 13, 2016 am 11:01 AM
php もの 存在する 礎石 はい 単純 表現

表达式是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 提供了一套完整强大的表达式,而为它提供完整的文件资料已经超出了本手册的范围。上面的例子应该为你提供了一个好的关于什么是表达式和怎样构建一个有用的表达式的概念。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles