suchen
HeimBackend-EntwicklungPHP-TutorialProzesssteuerung – Hinweise zum PHP-Handbuch

Skripte bestehen aus Anweisungen, und Anweisungen basieren auf der Prozesssteuerung, um Funktionen zu implementieren. In diesem Abschnitt wird hauptsächlich die Verwendung mehrerer Schlüsselwörter vorgestellt.

elseif

elseif verhält sich genauso wie else if. Wenn Sie einen Doppelpunkt verwenden, um die if/elseif-Bedingung zu definieren, können Sie kein aus zwei Wörtern bestehendes else if verwenden, da PHP sonst einen Parsing-Fehler generiert.

<code><?php $a = 1;
$b = 2;
if($a > $b) :
	echo "$a is greater than $b";
elseif($a == $b) :
	echo "$a equals $b";
else :
	echo "$a is neither greater than or equal to $b";
endif;</code>

Alternative Syntax

Die folgenden Schlüsselwörter können die alternative Syntax der Flusskontrolle verwenden. Die Grundform besteht darin, die linke geschweifte Klammer durch einen Doppelpunkt und die rechte geschweifte Klammer durch die folgenden Zeichen zu ersetzen.

<code>if - endif
while - endwhile
for - endfor
foreach - endforeach
switch - endswitch</code>

Achtung! PHP unterstützt nicht das Mischen der beiden Syntaxen innerhalb desselben Steuerblocks.

do-while

Diese Schleife kommt auf den ersten Blick bekannt vor, einige ihrer Verwendungsmöglichkeiten werden jedoch übersehen.

Im

-Handbuch heißt es, dass erfahrene Benutzer der C-Sprache möglicherweise mit einer anderen Verwendung von do-while-Schleifen vertraut sind, bei denen Anweisungen innerhalb von do-while(0) platziert werden. Dies ist das erste Mal, dass ich von dieser Technik höre. Es scheint, dass ich noch ein C-Neuling bin.

Lassen Sie uns übrigens die Vorteile dieser besonderen Verwendung suchen und organisieren do-while(0).

  1. Code-Chunking ist intuitiver als nur die Verwendung von geschweiften Klammern.
  2. Verwenden Sie break, um den verbleibenden Codeabschnitt zu überspringen.
  3. Es ist hilfreich für Makrodefinitionsfunktionen. Sie können bei der Verwendung ein Semikolon am Ende des Satzes hinzufügen, was eher wie ein Funktionsaufruf aussieht.
  4. Der Bereich auf Blockebene verhindert, dass sich Variablennamen auf Bereiche der oberen Ebene ausbreiten.
  5. Transformierte goto Aussage.

Dieser Beitrag erklärt sehr gut die Rolle von do{}while(0) - c - SegmentFault.

foreach

foreach kann nur auf Array- und Objektdurchquerung angewendet werden. foreachDie Syntaxstruktur bietet eine einfache Möglichkeit, das Array zu durchlaufen. Nachfolgend finden Sie zwei Syntaxen.

<code>foreach(array_expression as $value)
	statement
foreach(array_expression as $key => $value)
	statement</code>

Um den Wert eines Array-Elements zu ändern, müssen Sie eine Referenzzuweisung verwenden, die durch Hinzufügen von $value vor & erreicht wird.

<code><?php $arr = array(1, 2, 3, 4);
foreach($arr as &$value) {
	$value = $value * 2;
}
unset($value);
foreach($arr as $value) {
	echo "$value ";  // 2 4 6 8
}</code></code>

Achtung! Die $value-Referenz des letzten Elements des Arrays bleibt auch nach der foreach-Schleife erhalten und es wird empfohlen, sie mit unset() zu zerstören.

alles auflisten

Im Beispielprogramm wurde auch eine spezielle Traversal-Methode gefunden, nennen wir sie list-each.

Wenn foreach mit der Ausführung beginnt, zeigt der Zeiger im Array automatisch auf die erste Einheit, sodass es nicht erforderlich ist, foreach vor der reset()-Schleife aufzurufen. Aber für while in list-each ist der Array-interne Zeiger $arr immer vorhanden, sodass reset($arr) vor der nächsten Schleife benötigt wird.

<code><?php $arr = array('one', 'two', 'three');
// reset($arr);
while(list($key, $value) = each($arr)) {
	echo "Key: $key; Value: $value ";
}
reset($arr);
while(list($key, $value) = each($arr)) {
	echo "Key: $key; Value: $value ";
}</code></code>

Im obigen Code kann das erste reset weggelassen werden, das zweite reset jedoch nicht.

Liste

PHP 5.5 bietet die Möglichkeit, über ein Array von Arrays zu iterieren und verschachtelte Arrays in Schleifenvariablen zu entpacken.

<code><?php $array = [
	[1, 2],
	[3, 4],
];
foreach($array as list($a, $b)) {
	echo "A: $a; B: $b";
}</code></code>

list() kann weniger Zellen als das verschachtelte Array haben. In diesem Fall werden die zusätzlichen Array-Zellen ignoriert. Bei mehreren wird eine Fehlermeldung ausgegeben.

Pause

break wird verwendet, um die Ausführung der aktuellen for/foreach/while/do-while/switch-Struktur zu beenden. breakSie können einen optionalen numerischen Parameter akzeptieren, um zu entscheiden, aus wie vielen Schleifen herausgesprungen werden soll, aber der Parameter darf keine Variable sein.

breakDies ist das erste Mal, dass ich das Herausspringen aus mehreren Schleifen erlebt habe, also habe ich ein kleines Programm geschrieben, um es auszuprobieren.

<code><?php while(1) {
	while(1) {
		echo 'hello ';
		break 2;
	}
}
echo 'world';</code></code>

Ich habe es speziell in der C-Sprache ausprobiert und einen Syntaxfehler erhalten.

Weiter

Ähnlich wie break kann continue auch einen optionalen numerischen Parameter akzeptieren, um zu bestimmen, wie viele Schleifen bis zum Ende der Schleife übersprungen werden sollen.

Achtung! In PHP wird die switch-Anweisung als Schleifenstruktur betrachtet, die continue verwenden kann.

Schalter

Im

-Handbuch heißt es, dass sich PHP von anderen Sprachen unterscheidet. Die Wirkung der continue-Anweisung auf switch ähnelt der von break. Was bedeutet das?

switch/case führt einen losen Vergleich durch ==, keinen strengen Vergleich ===. Aus Effizienzgründen wird die Bedingung in der switch-Anweisung nur einmal ausgewertet und zum Vergleich mit jeder case-Anweisung verwendet. caseDer Ausdruck kann ein beliebiger Ausdruck sein, der einen einfachen Typ ergibt. Arrays oder Objekte können nicht verwendet werden. Es ist erlaubt, nach der case-Anweisung ein Semikolon anstelle eines Doppelpunkts zu verwenden.

erklären

Die Struktur

declare wird verwendet, um die Ausführungsanweisungen eines Codeabschnitts festzulegen. Die Syntaxstruktur ist wie folgt:

<code>declare(directive)
	statement</code>
Im Abschnitt

directive können Sie das Verhalten des Codesegments declare festlegen. Derzeit werden nur zwei Befehle erkannt: ticks und encoding. Die declare-Struktur kann auch im globalen Bereich verwendet werden und wirkt sich nach Ablauf auf den gesamten Code aus. Wenn jedoch eine Datei mit einer declare-Struktur in andere Dateien eingebunden wird, funktioniert sie nicht mit der übergeordneten Datei, die sie enthält.

Tick (Taktzyklus) ist ein Ereignis, das jedes Mal auftritt, wenn der Interpreter N zeitgesteuerte Low-Level-Anweisungen im declare Codesegment ausführt. Die Ereignisse, die in jedem Tick auftreten, werden durch register_tick_function() angegeben. Die Verwendung ist ungefähr wie folgt.

<code>declare(ticks = 1);
function tick_handler() {
	echo "tick_hander() called.\n";
}
register_tick_function('tick_hander');</code>

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

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

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

<code>declare(encoding = 'ISO-8859-1);</code>

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中返回的内容输出。

<code><?php $string = get_include_contents('vars.php');
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;</code></code>

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

require_once

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

include_once

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

goto

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

(全文完)

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

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an 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如何判断foreach循环到第几个php如何判断foreach循环到第几个Jul 10, 2023 pm 02:18 PM

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

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

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

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怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

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

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

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

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

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.