検索
ホームページバックエンド開発PHPチュートリアルプロセス制御 - PHP マニュアルノート

スクリプトはステートメントで構成されており、ステートメントはプロセス制御に依存して関数を実装します。このセクションでは主にいくつかのキーワードの使用方法を紹介します。

エルセイフ

elseifelse if的行为完全一样,如果用冒号来定义if/elseif条件,那就不能用两个单词的else if、そうでない場合、PHP は解析エラーを生成します。

リーリー

代替構文

次のキーワードでは、フロー制御の代替構文を使用できます。基本的な形式は、左中括弧をコロンに置き換え、右中括弧を次の文字に置き換えることです。

リーリー

注意! PHP では、同じ制御ブロック内で 2 つの構文を混合することはサポートされていません。

しながら

このループは一見すると見覚えがあるように見えますが、その用途のいくつかは見落とされています。

マニュアルには、経験豊富な C 言語ユーザーは別の do-while循环用法,把语句放在do-while(0) に精通している可能性があると記載されています。この手法については初めて知りましたが、私はまだ C 言語の初心者のようです。

ところで、この特別な使い方の利点を検索して整理してみましょう。 do-while(0)

    コードのチャンク化は、単に中括弧を使用するよりも直感的です。

  1. コードの残りのセクションをスキップするには、
  2. を使用します。 break
  3. マクロ定義関数を使用するときに文の最後にセミコロンを追加すると、より関数呼び出しのように見えます。

  4. ブロックレベルのスコープは、変数名が上位レベルのスコープに広がるのを防ぎます。

  5. 変換された
  6. ステートメント。 goto
この投稿では、do{}while(0) - C++ - SegmentFault の役割について詳しく説明しています。{}

foreach

構文構造は、配列を走査するための簡単な方法を提供します。以下の 2 つの構文があります。 foreach仅能够应用于数组和对象的遍历。foreach リーリー

配列要素の値を変更するには、

で実装されている参照割り当てを使用する必要があります。 $value前加& リーリー

注意!配列の最後の要素の

はそれを破棄します。 $value引用在foreach循环之后仍会保留,建议使用unset()

それぞれのリスト

サンプル プログラムでは、特別なトラバーサル メソッドも見つかりました。それを

と呼びます。 list-each

foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指すようになります。そのため、foreach の前に <code>reset() を呼び出す必要はありません。コード>ループ>。ただし、while

の場合、配列内部ポインター $arr は常に存在するため、次のループの前に reset($arr) が必要です。 foreach开始执行时,数组内部的指针会自动指向第一个单元,因此不需要在foreach循环之前调用reset()。但是对于while中的list-each,数组内部指针$arr会一直存在着,因此在下次循环前需要reset($arr) リーリー

上記のコードでは、最初の

は省略できません。 reset可以省略,但第二个reset

リスト

PHP 5.5 では、配列の配列を反復処理し、ネストされた配列をループ変数に解凍する機能が追加されています。

リーリー

のセルの数は、ネストされた配列のセルの数より少なくてもかまいません。その場合、余分な配列のセルは無視されます。それ以上ある場合は、エラー メッセージが発行されます。 list()

休憩

は、現在の for/foreach/while/do-while/switch 構造の実行を終了するために使用されます。 break用来结束当前for/foreach/while/do-while/switch结构的执行。break オプションの数値パラメーターを受け入れて、ループから抜け出す回数を決定できますが、パラメーターを変数にすることはできません。

break複数のループから抜け出すのは初めてなので、特別に小さなプログラムを書いて試してみました。

リーリー

特別にC言語で試してみたところ、構文エラーが発生しました。

続ける

と同様に、 continue もオプションの数値パラメーターを受け入れて、ループの最後までスキップするループの数を決定できます。 break相似,continue

注意! PHPのループ構造。

switch语句被认为是可以使用continueスイッチ

マニュアルには、PHP は他の言語とは異なると記載されています。switch に対する continue ステートメントの効果は

と似ています。それはどういう意味ですか?

continue语句作用到switch上的作用类似于break

ステートメントの後のコロン。

switch/case做的是松散比较==,而不是严格比较===。效率方面,switch语句中条件只求值一次并用来和每个case语句比较。case表达式可以是任何求值为简单类型的表达式,不能用数组或对象。允许使用分号代替case宣言する

構造は、コードの実行命令を設定するために使用されます。構文構造は次のとおりです。 リーリー

directive セクションでは、declarecode セグメントの動作を設定できます。現在、ticksencoding の 2 つのコマンドのみが認識されます。

構造体はグローバル スコープでも使用でき、有効期限が切れた後はすべてのコードに影響します。ただし、

構造を持つファイルが他のファイルにインクルードされている場合、そのファイルを含む親ファイルでは機能しません。 directive部分允许设定declare代码段的行为,目前只认识两个命令:ticksencodingdeclare结构也可用于全局范围,影响到期后的所有代码。但如果有declare

Tick (クロック サイクル) は、インタープリターが

コード セグメント内の N 個の時間指定可能な低レベル ステートメントを実行するたびに発生するイベントです。各ティックで発生するイベントは、register_tick_function() によって指定されます。使い方は大まかに以下の通りです。 declare代码段中解释器每执行N条可计时的低级语句就会发生的事件。在每个tick中出现的事件由register_tick_function()

&lt;code&gt;declare(ticks = 1);
function tick_handler() {
	echo &quot;tick_hander() called.\n&quot;;
}
register_tick_function('tick_hander');&lt;/code&gt;

可计时的低级语句有很多,register_tick_function()后会调用一次周期事件,每条语句后会调用一次周期事件,花括号结束时会调用一次周期事件。

注意,PHP中表达式不能用逗号隔开,不然会出现语法错误。这点与C语言不同,刚注意到。

可以用encoding指令来对每段脚本指定其编码方式。用法如下:

&lt;code&gt;declare(encoding = 'ISO-8859-1);&lt;/code&gt;

return

如果是在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被include或者require,则控制交回调用文件。如果当前脚本时被include的,则return的值会被当作include调用的返回值,那require呢?

require

requireinclude几乎完全一样,除了处理失败的方式不同之外。

require在出错时产生E_COMPILE_ERROR级别的错误,脚本中止。而include只产生警告E_WARNING,脚本继续执行。

include

include语句包含并运行指定文件,这里要注意一下指定文件的寻找次序。

  • 被包含文件先按参数给出的路径寻找。如果定义了路径,include_path会被完全忽略。
  • 如果没有给出目录(只有文件名)时则按照include_path指定的目录寻找。若没找到才在调用脚本文件所在目录和当前工作目录下寻找。那么问题来了,调用脚本文件所在目录和当前工作目录有什么区别呢?
  • 如果最后仍未找到文件,则include结构会发出一条警告,require结构会发出一个致命错误。

当一个文件被包含时,其中包含的代码继承了include所在行的变量范围。从该处开始,被调用文件中定义的变量才可在调用文件中使用。当一个文件被包含时,语法解析器在目标文件的开头脱离PHP模式并进入HTML模式,当文件结尾回复。

对于返回值,在失败时include返回FALSE并且发出警告。成功的包含则返回1,除非在包含文件中另外给出了返回值。如果在包含文件中定义有函数,这些函数不管是在return之前还是之后定义的,都可以独立在主文件中使用。

如果来自远程服务器的文件应该在远端运行而只输出结果,那用readfile()函数更好。另一种将PHP文件包含到一个变量中的方法是用输出控制函数结合include来捕获其输出。第一次遇到,比较陌生。下面这段代码能将脚本vars.php中返回的内容输出。

&lt;code&gt;&lt;?php $string = get_include_contents(&amp;#39;vars.php&amp;#39;);
function get_include_contents($filename) {
	if(is_file($filename)) {
		ob_start();
		include $filename;
		$contents = ob_get_contents();
		ob_end_clean();
		return $contents;
	}
	return false;
}
echo $string;&lt;/code&gt;&lt;/code&gt;

因为includerequire是一种特殊的语言结构,其参数不需要括号。如果文件被包含两次,PHP会发出致命错误,因为函数已经被定义。推荐使用include_once

require_once

require_once语句和require语句完全相同,唯一区别是,PHP会检查该文件是否已经被包含过,如果是则不会再次包含。

include_once

include_once语句和include语句类似,唯一区别是如果该文件已经被包含过,则不会再次包含。

goto

goto操作符用于跳转到程序的另一位置,目标位置可以用目标名称加上冒号来标记。PHP中的goto有一定限制,目标位置只能位于同一个文件和作用域。也就是说无法跳出一个函数或类方法,也无法跳入到任何循环或者switch结构。

(全文完)

以上就介绍了流程控制 - PHP手册笔记,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Java ArrayList遍历时使用foreach和iterator删除元素的区别是什么?Java ArrayList遍历时使用foreach和iterator删除元素的区别是什么?Apr 27, 2023 pm 03:40 PM

一、Iterator和foreach的区别多态差别(foreach底层就是Iterator)Iterator是一个接口类型,他不关心集合或者数组的类型;for和foreach都需要先知道集合的类型,甚至是集合内元素的类型;1.为啥说foreach底层就是Iterator编写的代码:反编译代码:二、foreach与iterator时remove的区别先来看阿里java开发手册但1的时候不会报错,2的时候就会报错(java.util.ConcurrentModificationException)首

php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

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

php如何判断foreach循环到第几个php如何判断foreach循环到第几个Jul 10, 2023 pm 02:18 PM

​php判断foreach循环到第几个的步骤:1、创建一个“$fruits”的数组;2、创建一个计数器变量“$counter”初始值为0;3、使用“foreach”循环遍历数组,并在循环体中增加计数器变量的值,再输出每个元素和它们的索引;4、在“foreach”循环体外输出计数器变量的值,以确认循环到了第几个元素。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

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

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

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

php include和include_once有什么区别php include和include_once有什么区别Mar 22, 2023 am 10:38 AM

当我们在使用 PHP 编写网页时,有时我们需要在当前 PHP 文件中包含其他 PHP 文件中的代码。这时,就可以使用 include 或 include_once 函数来实现文件包含。那么,include 和 include_once 到底有什么区别呢?

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

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

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境