suchen
HeimBackend-EntwicklungPHP-TutorialZwei Verwendungsmöglichkeiten von PHP foreach als $key => $value

In diesem Artikel werden die beiden Verwendungen von PHP foreach als $key => $value vorgestellt, der einen bestimmten Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn benötigen

1. Einführung in die Syntax von foreach

PHP 4 und höhere Versionen enthalten die foreach-Struktur, die nur eine bequeme Möglichkeit ist, ein Array zu durchlaufen. foreach kann nur mit Arrays verwendet werden und es tritt ein Fehler auf, wenn versucht wird, es mit anderen Datentypen oder einer nicht initialisierten Variablen zu verwenden. Es gibt zwei Syntaxen, die zweite ist eine nützliche Erweiterung der ersten.

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement

Das erste Format iteriert über das angegebene array_expression-Array. Bei jedem Durchlauf der Schleife wird $value der Wert der aktuellen Zelle zugewiesen und der Zeiger innerhalb des Arrays wird um einen Schritt vorwärts bewegt (sodass die nächste Zelle in der nächsten Schleife abgerufen wird).

Das zweite Format macht dasselbe, außer dass zusätzlich zum Wert der aktuellen Zelle in jeder Schleife auch der Schlüsselwert der Variablen $key zugewiesen wird. Schauen Sie sich den folgenden Code an:

$arr = array("1"=>"111","2"=>"222","3"=>"333");
foreach($arr as $key=>$value)
{
echo $key."=>".$value."\n";
}
结果如下:
1=>111
2=>222
3=>333

Der Schlüsselwert hier kann als Array-Index verstanden werden, und der Index des Array-Elements a[2] ist 2.

Wenn foreach mit der Ausführung beginnt, zeigt der Zeiger im Array automatisch auf das erste Element. Dies bedeutet, dass vor der foreach-Schleife kein Aufruf von reset() erforderlich ist. Die while-Schleife muss zurückgesetzt werden. Die beiden folgenden Codes funktionieren genau gleich.

1. Verwenden Sie die while-Schleife

$arr = array("one", "two", "three");
reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value<br>\n";
}

2. Verwenden Sie foreach

foreach ($arr as $value) {
echo "Value: $value<br>\n";
}

Beachten Sie außerdem, dass foreach eine Kopie des angegebenen Arrays betreibt. und nicht das Array selbst. Daher hat sich auch bei der Konstruktion von every() der ursprüngliche Array-Zeiger nicht geändert und der Wert der Array-Einheit wurde nicht beeinflusst.

foreach unterstützt nicht die Möglichkeit, Fehlermeldungen mit „@“ zu unterdrücken.

2. Zusammenfassung von PHP foreach

1.

Unter normalen Umständen sind $arr und $value in foreach($arr as $value) Kopien und werden nicht von externen Faktoren beeinflusst, d. h.

$arr = array(0,1,2,3,4,5);
foreach($arr as $value){
$arr = array();
echo $value;
}
结果是:12345

Aber Wenn $ arr eine Referenz ist, ist die Situation anders.

$arr = array(0,1,2,3,4,5);
$arr = &$arr;
foreach($arr as $value){
$arr = array();
echo $value;
}
结果是: 0

Dies liegt daran, dass das in der Schleife verwendete $arr direkt auf die Originaldaten verweist als eine Kopie anzufertigen.

Wenn $value eine Referenz und $arr keine Referenz ist, ist das Ergebnis dasselbe, $value verweist auf die Originaldaten statt auf die Kopie

$arr = array(0,1,2,3,4,5);
foreach($arr as &$value){
$arr = array();
echo $value;
}
结果是: 0

Es gibt noch einen anderen Weg. Die Situation ist etwas ganz Besonderes: Wenn $arr als globale Variable definiert ist, wird $arr auch zu einer Referenz

global $arr;
$arr = array(0,1,2,3,4,5);
foreach($arr as $value){
$arr = array();
echo $value;
}
结果是: 0

2 Wenn Sie ein Array zweimal durchlaufen , du darfst es nicht so schreiben

foreach($arr as &$value){}
foreach($arr as $value){}

Dies führt dazu, dass das Ergebnis der zweiten Schleife falsch ist (vielleicht handelt es sich um einen PHP-Fehler). Sie können stattdessen Folgendes verwenden:

//solution 1
foreach($arr as &$value){}
unset($value);
foreach($arr as $value){}
//solution 2
foreach($arr as &$value){}
foreach($arr as &$value){}
//solution 3
foreach($arr as &$value){}
$arr2 = $arr;
foreach($arr2 as $value){}

Verwandte Empfehlungen:

Detaillierte Erläuterung der Verwendung und Beispiele von foreach in PHP

Das obige ist der detaillierte Inhalt vonZwei Verwendungsmöglichkeiten von PHP foreach als $key => $value. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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怎么查找字符串是第几位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

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

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

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

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version