Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der impliziten Konvertierungsbeispiele von in_array in PHP

Detaillierte Erläuterung der impliziten Konvertierungsbeispiele von in_array in PHP

小云云
小云云Original
2018-03-09 10:08:051315Durchsuche

Wenn ich heute eine Schnittstelle schreibe, muss ich eine große Anzahl grundlegender Informationsparameter übergeben. Die Parameter sind von zwei Typen: int und string. Zur Vereinfachung der Überprüfung habe ich vor, alle Parameter in ein Array einzufügen Bestimmen Sie dann mit in_array (0, $param), ob der int-Parameter 0 ist, und bestimmen Sie dann separat, ob der Zeichenfolgenparameter leer ist. Der Beispielcode lautet wie folgt:


      if(in_array(0, $param) || $param['img'] == '') {
        $this->errorCode = 10030;
        $this->errorMessage = '参数不正确';
        return false; 
      }

Es ist ein Selbsttest. Ich habe festgestellt, dass bei der Übergabe der richtigen Parameter eine Eingabeaufforderung zurückgegeben wird, die darauf hinweist, dass die Parameter falsch sind! ! !

Der Grund

Diese Situation tritt genau deshalb auf, weil in_array Probleme verursacht. in_array(search,array) entspricht dem Vergleich jedes Werts im Array mit search Zusätzlich zum int-Parameter in meinem $param-Array gibt es auch einen String-Parameter, der der Verwendung von string und int zum Vergleichen impliziter PHP-Konvertierungsregeln entspricht:

Nicht-numerische Zeichenfolge und Ganzzahl Zum Vergleich wird der String automatisch in int(0) konvertiert

Das folgende Beispiel verifiziert unsere Aussage:


<?php

  $a = (int)&#39;abc&#39;;
  var_dump($a); //int(0)

  $c = array(0,1,2,3);
  if(in_array(&#39;abc&#39;, $c)) {
    echo &#39;exist&#39;;
  } else {
    echo &#39;not exist&#39;;
  } //exist

Lösung

in_array fügt einen dritten Parameter true hinzu, um zu prüfen, ob der Typ der gesuchten Daten und der Wert des Arrays identisch sind, sodass die Funktion nur prüfen kann, ob das Element in existiert Das Array und der Datentyp geben nur dann „true“ zurück, wenn es mit dem angegebenen Wert übereinstimmt

Für das Geschäft, das ich oben vorgestellt habe, kann ich strenger vorgehen und Daten vom Typ „int“ in einem Array und „string“ in einem Array speichern. und führen Sie die Datenkalibrierung jeweils für die beiden verschiedenen Arten von Arrays durch. Auf diese Weise treten die oben genannten Probleme nicht auf

Verwandte Empfehlungen:

Über einige Beispiele der impliziten Konvertierung und Zusammenfassung in JavaScript

Wie verwende ich die implizite Konvertierung? Zusammenfassung der Beispielverwendung der impliziten Konvertierung

Detaillierte Erläuterung der impliziten Konvertierung von Javascript

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der impliziten Konvertierungsbeispiele von in_array in PHP. 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