Heim > Artikel > Backend-Entwicklung > Zusammenfassung der Verwendung von PHP-Arrays
Arrays verwenden
Ein Array ist eine Variable, die einen Satz oder eine Reihe von Werten speichern kann. Ein Array kann viele Elemente haben. Jedes Element hat einen Wert, beispielsweise Text, eine Zahl oder ein anderes Array. Ein Array, das andere Arrays enthält, wird als mehrdimensionales Array bezeichnet.
Was ist ein Array?
Eine Skalarvariable ist ein benannter Bereich, der zum Speichern von Werten verwendet wird. Ebenso ist ein Array ein benannter Bereich, der zum Speichern einer Reihe von Variablenwerten verwendet wird, sodass Sie Arrays zum Organisieren skalarer Variablen verwenden können.
Die in einem Array gespeicherten Werte werden Array-Elemente genannt. Jedem Array-Element ist ein Index (auch Schlüssel genannt) zugeordnet, über den auf das Element zugegriffen werden kann. In den meisten Programmiersprachen haben Arrays numerische Indizes, und diese Indizes beginnen normalerweise bei 0 oder 1.
Numerisches Indexarray
In PHP beginnt der Standardwert des numerischen Index bei 0, kann aber natürlich geändert werden.
1. Initialisierung des digitalen Index-Arrays
$porducts = array('Tires', 'Oil', 'Spark Plugs');
Genau wie die Echo-Anweisung ist array() eigentlich eine Sprachstruktur. eher als eine Funktion.
Abhängig von den Anforderungen an die Array-Inhalte müssen Sie diese möglicherweise nicht wie im obigen Beispiel manuell initialisieren. Wenn die erforderlichen Daten in einem anderen Array enthalten sind, können Sie das Array einfach mit dem Operator „=" in ein anderes Array kopieren.
Wenn Sie die Zahlen in aufsteigender Reihenfolge in einem Array speichern müssen, können Sie die Funktion range() verwenden, um dieses Array automatisch zu erstellen. Die folgende Codezeile erstellt ein Zahlenarray von 1 bis 10: $numbers = range(1,10); Die Funktion range() verfügt über einen optionalen dritten Parameter, der das Festlegen von Werten zwischen Schritten ermöglicht. Wenn Sie beispielsweise ein Array mit ungeraden Zahlen zwischen 1 und 10 erstellen müssen, können Sie den folgenden Code verwenden: $odds = range(1,10,2); Die Funktion
range() kann auch mit Zeichen arbeiten , wie zum Beispiel: $letters = range('a', 'z');
2. Greifen Sie auf den Inhalt des Arrays zu
Um auf den Inhalt einer Variablen zuzugreifen, können Sie ihren Namen direkt verwenden. Wenn die Variable ein Array ist, kann auf ihren Inhalt über eine Kombination aus dem Variablennamen und einem Schlüsselwort oder Index zugegriffen werden. Das Schlüsselwort oder der Index gibt die Variable an, auf die wir zugreifen möchten. Der Index steht in eckigen Klammern hinter dem Variablennamen.
Standardmäßig ist Element 0 das erste Element des Arrays.
Bitte beachten Sie, dass die String-Parsing-Funktionen von PHP zwar sehr leistungsstark und intelligent sind, jedoch zu Verwirrung führen können. Wenn Sie Arrays oder andere Variablen in Zeichenfolgen in doppelte Anführungszeichen einbetten und diese nicht richtig interpretiert werden, können Sie sie außerhalb der doppelten Anführungszeichen platzieren oder Kapitel 4 von „String-Operationen mit
Regulären Ausdrücken“ nachschlagen, um weitere Informationen zu erhalten komplexe Syntax. Genau wie andere Variablen in PHP müssen Arrays nicht vorab initialisiert oder erstellt werden. Sie werden bei der ersten Verwendung automatisch erstellt.
3. Verwenden Sie Schleifen, um auf Arrays zuzugreifen.
Da Arrays geordnete Zahlen als Indizes verwenden, können Sie den Inhalt des Arrays problemlos mithilfe einer for-Schleife anzeigen.
for ($i=0; $i41d5bb758949120b518aa5d31d9f40b0100, ' Oil'=>10, 'Spark Plugs'=>4 );
Das Symbol zwischen dem Schlüsselwort und dem Wert ist nur ein Größer-als-Zeichen und ein Gleichheitszeichen.
2 Auf Array-Elemente zugreifen
In ähnlicher Weise kann auf den Inhalt eines Arrays mithilfe von Variablennamen und Schlüsselwörtern zugegriffen werden. Zum Beispiel $prices['Tires'].
3 Schleifenanweisungen verwenden
Da der Index des relevanten Arrays keine Zahl ist, ist es unmöglich, einen einfachen Zähler zu verwenden, um das Array in einer for-Schleifenanweisung zu bearbeiten. Sie können jedoch eine foreach-Schleife oder die Strukturen list() und every() verwenden.
Die foreach()-Schleife hat eine andere Struktur, wenn die foreach-Schleifenanweisung zum Bearbeiten verwandter Arrays verwendet wird. Schlüsselwörter können wie folgt verwendet werden:
foreach ($prices as $key => $value) echo $key.'=>'.$value.'<br />'; 如下所示的代码将使用each()结构打印$prices数组的内容: while( $element = each($prices)) { echo $element['key']; echo ' - '; echo $element['value']; echo '<br />'; }
each()-Funktion gibt das aktuelle Element des Arrays zurück und übernimmt das nächste Element als aktuelles Element. Da die Funktion „each()“ in einer While-Schleife aufgerufen wird, gibt sie jedes Element im Array der Reihe nach zurück, und wenn sie das Ende des Arrays erreicht, wird die Schleifenoperation beendet.
In diesem Code ist die Variable $element ein Array. Wenn every() aufgerufen wird, gibt es ein Array mit 4 numerischen Werten und 4 Indizes zurück, die auf die Array-Positionen zeigen. Die Positionen Schlüssel und 0 enthalten den Schlüssel des aktuellen Elements, während die Positionen Wert und 1 den Wert des aktuellen Elements enthalten. Auch wenn es keinen Unterschied macht, welche Methode Sie wählen, haben wir uns dafür entschieden, benannte Standorte statt numerisch indizierter Standorte zu verwenden.
Außerdem gibt es eine fortgeschrittenere und gebräuchlichere Möglichkeit, denselben Vorgang durchzuführen. Mit der Funktion list() kann ein Array in eine Reihe von Werten zerlegt werden. Die beiden von der Funktion every() zurückgegebenen Werte können wie folgt getrennt werden: list( $product, $price) = every( $price); Der obige Code verwendet every(), um das aktuelle Element aus dem zu entfernen $prices-Array, geben Sie es als Array zurück und zeigen Sie dann auf das nächste Element. Außerdem wird list() verwendet, um die beiden Elemente 0 und 1, die in dem von every() zurückgegebenen Array enthalten sind, in zwei neue Variablen mit den Namen $product und $price zu ändern.
Wir können das gesamte $prices-Array durchlaufen und seinen Inhalt mit einem kurzen Skript wie diesem anzeigen:
while(list($prodct, $pirce) = each($prices)) echo "$product - $price<br />";Die Ausgabe dieses Codes ist dieselbe wie die Ausgabe des vorherigen Skripts , Aber es ist einfacher zu lesen, weil list() die Benennung neuer Variablen ermöglicht.
Zu beachten ist, dass das Array bei Verwendung der Funktion every() das aktuelle Element aufzeichnet. Wenn Sie das Array im selben Skript zweimal verwenden möchten, müssen Sie die Funktion reset() verwenden, um das aktuelle Element an den Anfang des Arrays zurückzusetzen. Um das Preisarray erneut zu durchlaufen, können Sie Code wie diesen verwenden:
reset($prices);
while(list($product, $price) = every($prices))
echo "$ Produkt - $pricedf250b2156c434f3390392d09b1c9563";
Array-Operator
+Union, == Äquivalent, === Identität, != nicht äquivalent, a8093152e673feb7aba1828c43532094 nicht äquivalent, !== ist nicht identisch.
Der Union-Operator versucht, die Elemente in $b am Ende von $a hinzuzufügen. Wenn Elemente in $b denselben Index haben wie einige Elemente in $a, werden sie nicht hinzugefügt. Das heißt, die Elemente in $a werden nicht überschrieben.
Mehrdimensionale Arrays
Ein Array ist nicht unbedingt eine einfache Liste von Schlüsseln und Werten – jede Position im Array kann auch ein anderes Array enthalten. Mit dieser Methode kann ein zweidimensionales Array erstellt werden. Sie können sich ein zweidimensionales Array als Matrix oder ein Netzwerk mit Breite und Höhe oder Zeilen und Spalten vorstellen.
Array-Sortierung
1 Verwenden Sie die Funktion sort().
Bei der Funktion sort() wird die Groß-/Kleinschreibung beachtet. Alle Großbuchstaben stehen vor Kleinbuchstaben. „A“ ist also kleiner als „Z“ und „Z“ ist kleiner als „a“.
Der zweite Parameter dieser Funktion ist optional. Dieser optionale Parameter kann SORT_REGULAR (Standard), SORT_NUMERIC oder SORT_STRING übergeben werden. Die Möglichkeit, einen Sortiertyp anzugeben, ist beispielsweise beim Vergleich von Zeichenfolgen nützlich, die die Zahlen 2 und 12 enthalten können. Aus mathematischer Sicht ist 2 kleiner als 12, aber als String ist „12“ kleiner als „2“.
2 Verwenden Sie die Funktionen asort() und ksort(), um verwandte Arrays zu sortieren.
Die Funktion asort() sortiert basierend auf dem Wert jedes Elements des Arrays. Die Funktion ksort() sortiert nach Schlüsselwort und nicht nach Wert.
3 Umgekehrte Sortierung
Die Funktion rsort() sortiert ein eindimensionales numerisches Indexarray in absteigender Reihenfolge. Die Funktion arsort() sortiert ein eindimensionales assoziatives Array in absteigender Reihenfolge nach dem Wert jedes Elements. Die Funktion krsort() sortiert das
eindimensionale Array in absteigender Reihenfolge nach den Schlüsseln der Array-Elemente. Um auf Daten in einem eindimensionalen Array zuzugreifen, müssen Sie den Namen des Arrays und den Index des Elements verwenden. Zweidimensionale Arrays ähneln eindimensionalen Arrays, außer dass ein Element zwei Indizes hat – Zeile und Spalte.
Sie können eine doppelte for-Schleife verwenden, um den gleichen Effekt zu erzielen:
for ( $row=0; $row<3; $row++ ) { for ( $column=0; $column<3; $column++ ) { echo '|'.$products[$row][$column]; | echo '|<br />'; }Wenn Sie diesen Code für ein großes Array verwenden, wird es viel einfacher.
Möglicherweise möchten Sie lieber Spaltennamen anstelle von Zahlen erstellen. Sie können Code wie diesen verwenden:
$products = array ( array ( 'Code'=>'TIR', 'Descrīption'=>'Tires', 'Price'=>100 ), array ( 'Code'=>'OIL', 'Descrīption'=>'Oil', 'Price'=>10 ), array ( 'Code'=>'SPK', 'Descrīption'=>'Spark Plugs', 'Price'=>4 ) };Wenn Sie einen einzelnen Wert abrufen möchten, ist die Verwendung dieses Arrays viel einfacher. Denken Sie daran: Es ist einfacher, sich an das zu erinnern, was Sie beschreiben, wenn Sie es in einer nach ihm benannten Spalte speichern, als wenn Sie es in der sogenannten ersten Spalte speichern. Bei der beschreibenden Indizierung muss nicht beachtet werden, dass ein Element an der Position [x][y] gespeichert ist. Die Verwendung eines aussagekräftigen Paars aus Zeilen- und Spaltennamen als Index erleichtert das Auffinden der benötigten Daten.
Dann können wir keine einfache for-Schleife verwenden, um jede Spalte der Reihe nach zu durchlaufen. Sie können eine for-Schleife verwenden, um das äußere numerisch indizierte Array $products zu durchlaufen. Jede Zeile des $products-Arrays ist ein Array mit einem beschreibenden Index. Mit den Funktionen every() und list() in einer While-Schleife können Sie das gesamte interne Array durchlaufen. Daher ist eine for-Schleife mit einer darin eingebetteten while-Schleife erforderlich.
for ( $row = 0; $row < 3; $row++ } { while ( list ( $key, $value ) = each ( $products[$row] ) ) { echo "|$value"; } echo '|<br />'; }
三维数组具有高、宽、深的概念。如果能轻松地将一个二维数组想像成一个有行和列的表格,那么就可以将三维数组想像成一堆像这样的表格。每个元素可以通过层、行和列进行引用。
根据创建多维数组的方法,可以创建四维、五维或六维数组。在PHP中,并没有设置数组维数的限制,但人们很难设想一个多于三维的数组。大多数的实际问题在逻辑上只需要使用三维或者更少维的数组结构就可以了。
多维数组的排序
对 多于一维的数组进行排序,或者不按字母和数字的顺序进行排,要复杂得多。PHP知道如何比较两个数字或字符串,但在多维数组中,每个元素都是一个数组。 PHP不知道如何比较两个数组,所以需要建立一个比较它们的方法。在大多数情况下,单词和数字的顺序是显而易见的——但对于复杂的对象,问题就会多一些。
1 用户定义排序
usort()中的“u”代表“user”,因为这个函数要求传入用户定义的比较函数。asort和ksort对应的版本uasort()和uksort()也要求传入用户定义的比较函数。
类似于asort(),当对非数字索引数组的值进行排序时,uasort()才会被使用。如果值是简单的数字或文本则可以使用asort。如果要比较的值像数组一样复杂,可以定义一个比较函数,然后使用uasort()。
类似于ksort(),当对非数字索引数组的关键字进行排序时才使用uksort()。如果值是简单的数字或文本就使用ksort。如果要比较的对象像数组一样复杂,可以定义一个比较函数,然后使用uksort()。
2 反向用户排序
函数sort()、asort()和ksort()都分别对应一个带字母“r”的反向排序函数。用户定义的排序没有反向变体,但可以对一个多维数组进行反向排序。
对数组进行重新排序
1 使用shuffle()函数
在PHP的早期版本中,shuffle()要求调用srand()函数时首先提供一个随机数生成器。如今,这个步骤已经不再需要了。
如果这个函数对你非常重要,可以在程序中应用该函数之前在服务器上测试它。
由于并不需要真正重新排序整个数组,使用array_rand()函数可以实现相同的功能。
2 使用array_reverse()函数
array_reverse()函数使用一个数组作参数,返回一个内容与参数数组相同但顺序相反的数组。
因为单独使用range()函数将创建一个升序序列,所以必须使用sort()函数或array_reverse()函数将数组中的数字变为降序。或者,也可以使用for循环通过一次一个元素的方式创建这个数组。如:
$numbers = array(); for ($i=10; $i>0; $i--) array_push( $numbers, $i );
一个for循环可以像这样按降序方式运行。可以将计数器
一个for循环可以像这样按降序方式运行。可以将计数器的初始值设为一个大数,在每次循环末尾使用运算符“--”将计数器减1。
在这里,我们创建了一个空数组,然后使用array_push()函数将每个新元素添加到数组的末尾。请注意,和array_push()相反的函数是array_pop(),这个函数用来删除并返回数组末尾的一个元素。
或者,也可以使用array_reverse()函数将由range()函数所创建的数组进行反向排序。
请注意,array_reverse()函数将返回一个原数组修改后的副本。如果不再需要原来的数组,比如在这个例子中,可以用新的副本覆盖原来的版本。
如果数据只是一系列的整数,可以通过将-1作为range()函数的第三个可选调参数,以相反的顺序创建该数组。
从文件载入数组
使用file()函数将整个文件载入一个数组中。文件中的每行则成为数组中的一个元素。使用了count()函数来统计数组中的元素个数。
explode("\t", $orders[$i])
explode()函数可以将传入的字符串分割成一个个小块。每个制表符成为两个元素之间的断点。这个函数的可选参数limit可以用来限制被返回的最大块数。
可以使用许多方法从字符串中提取数字。在这里,我们使用了intval()函数。它可以将一个字符串转化成一个整数。这个转换是相当智能化的,它可以忽略某些部分,例如标签就不能转换成数字。
执行其他的数组操作
1 在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev()
前面已经提到,每个数组都有一个内部指针指向数组中的当前元素。当使用函数each()时,就间接地使用了这个指针,但是也可以直接使用和操作这个指针。
如果创建一个新数组,那么当前指针就将被初始化,并指向数组的第一个元素。
调用next()或each()将使指针前移一个元素。调用each($array_name)会在指针前移一个位置之前返回当前元素。next()函数则有些不同——调用next($array_name)是将指针前移,然后再返回新的当前元素。
调用end($array_name)可以将指针移到数组末尾。
要反向遍历一个数组,可以使用end()和prev()函数。prev()函数和next()函数相反。它是将当前指针往回移一个位置然后再返回新的当前元素。
2 对数组的每一个元素应用任何函数:array_walk()
array_walk()函数需要三个参数。第一个是arr,也就是需要处理的数组。第二个是func,也就是用户自定义并将作用于数组中每个元素的函数。第三个参数userdata是可选的,如果使用它,它可以作为一个参数传递给我们自己的函数。
看一个销微复杂点的例子:
function my_multiply(&$value, $key, $factor) { $value *= $factor; } array_walk(&$array, 'my_multiply', 3);
在这里,我们定义了一个名为my_multiply()的函数,它可以用所提供的乘法因子去乘以数组中的每个元素。
此外,还有一个需要注意的问题是传递毵数$value的方式。在my_multiply()的函数定义中,变量前面的地址符(&)意味着$value是按引用方式传递的。按引用方式传递允许函数修改数组的内容。
3 统计数组元素个数:count()、sizeof()和array_count_values()
count()函数和sizeof()函数具有同样的用途,都可以返回数组元素的个数。可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组个数就是0。
如 果调用array_count_values($array),这个函数将会统计每个特定的值在数组$array中出现过的次数(这就是数组的基数集)。 这个函数将返回一个包含频率表的相关数组。这个数组包含数组$array中的所有值,并以这些值作为相关数组的关键字。每个关键字所对应的数值就是关键字 在数组$array中出现的次数。
4 将数组转换成标量变量:extract()
对于一个非数字索引数组,而该数组又有许多关键字-值对,可以使用函数extract()将它们转换成一系列的标量变量。
函数extract()的作用是通过一个数组创建一系列的标量变量,这些变量的名称必须是数组中关键字的名称,而变量值则是数组中的值。
extract()函数具有两个可选参数:extract_type和prefix。变量extract_type将告诉extract()函数如何处理冲突。有时可能已经存在一个和数组关键字同名的变量,该函数的默认操作是覆盖已有的变量。
两个最常用的选项是EXTR_OVERWRITE(默认值)和EXTR_PREFIX_ALL。当知道会发生特定的冲突并且希望跳过该关键字或要给它加上前缀时,可能会用到其他选项。
extract()可以提取出一个元素,该元素的关键字必须是一个有效的变量名称,这就意味着以数字开始或包含空格的关键字将被跳过。
Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung von PHP-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!