Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über die Verwendung von foreach/in_array in PHP

Eine kurze Diskussion über die Verwendung von foreach/in_array in PHP

高洛峰
高洛峰Original
2017-01-03 14:38:451437Durchsuche

PHP ist in der Entwicklung sehr effizient, was verständlich ist, aber es geht zu Lasten der Ausführungseffizienz. Die PHP-Array-Funktion ist sehr leistungsfähig, aber Sie sollten sie auch genauer in Betracht ziehen und für alle Fälle mehrere Fallstricke ausprobieren. Hier werde ich kurz die beiden aufgetretenen Fallstricke erwähnen.

Foreach bietet eine einfache Möglichkeit, das Array zu durchlaufen, wodurch der Inhalt der Daten oder des Objekts leicht gelesen werden kann. In der offiziellen Dokumentation heißt es jedoch, dass foreach auf dem internen Array-Zeiger basiert und seinen Wert in der Schleife ändert kann zu unerwartetem Verhalten führen. Also grundsätzlich:
1. Versuchen Sie nicht, den Wert innerhalb der Schleife zu ändern, da das Ergebnis sonst über das gewünschte hinausgeht.
2 ist eine sichere Methode, obwohl sie selten verwendet wird Bei Verwendung sollte die unset-Funktion jedoch sofort nach dem Ende der Referenz aufgerufen werden, um die Variable zu zerstören. Andernfalls wird der letzte Wert der Schleife geändert, sodass unerwartete Werte auftreten ​wurden beispielsweise erhalten: Wenn die Liste durchgeschleift wird, enthält die letzte Ausgabezeile viele chaotische Werte oder Nullwerte. Die Verwendung von unset löst dieses Problem.

Sehen wir uns ein Beispiel an

<?php 
/*-------------------------------------------------------------------------*/
/* foreach example 1: value only */
echo "foreach example 1: value only ".&#39;<br />&#39;; 
$a = array(1, 2, 3, 17); 
foreach ($a as $v) { 
echo "Current value of ".$a.":". $v."<br />"; 
} 
?> 
// 运行结果 
foreach example 1: value only 
Current value of $a: 1 
Current value of $a: 2 
Current value of $a: 3 
Current value of $a: 17

in_array, seine Bedeutung besteht darin, zu überprüfen, ob die vorherige Zeichenfolge im nächsten Array vorhanden ist, und in den meisten Fällen funktioniert es auch so: Aber wann Das folgende Array ist eine Ganzzahl, z. B. Array (0,1,2,3). PHP wird die vorherige Zeichenfolge internieren, sodass der Wert 0 erhalten wird Liegt dieser Wert im Array, ist die Gleichung aufgestellt. Liegt er über den Erwartungen?
Wenn also festgestellt wird, dass die folgenden Daten eine Ganzzahl sind, insbesondere wenn sie 0 sind (dies kann alle Zeichenfolgen ersetzen), dürfen Sie diese Funktion nicht mehr verwenden. Sie können stattdessen key_exists verwenden, aber die nachfolgenden Daten benötigen mit array_flip umgekehrt werden.

Schauen wir uns noch einmal ein Beispiel an

function search($keyWord, $stack) {//此处判断是应该更新还是插入
 
      foreach ($stack as $key => $val) {
 
        if (in_array($keyWord, $val)) {
 
          return TRUE;
 
        }
 
      }
 
      return FALSE;
 
    }

Was passiert, wenn ein String als Array verwendet wird, um Werte zu erhalten? PHP ist eine sehr fehlertolerante Sprache. Sie wird ihr Bestes geben, um Ihnen bei der Korrektur Ihrer Fehler zu helfen, sodass Sie Ihren Referenzindex intelligent in eine Ganzzahl umwandeln. Dann ist der String-Index 0 und der Wert ist Sie wird den Wert der ersten Zeichenfolge erhalten. Liegt er über Ihren Erwartungen? Die Lösung besteht darin, zu bestätigen, ob die Variable ein Array ist, bevor auf den Index is_array verwiesen wird.

Weitere Artikel zur Verwendung von foreach/in_array in PHP finden Sie auf der chinesischen PHP-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