2009-07-16 28 views
8

ich jemand anderes PHP-Code bin zu analysieren und ich habe bemerkt, dass der Eingang HTML viele versteckten Eingabefelder mit Namen hat, die zum Beispiel mit ‚[]‘, Ende:eckige Klammern in versteckten HTML-Eingabe-Feldern

<input type="hidden" name="ORDER_VALUE[]" value="34" /> 
<input type="hidden" name="ORDER_VALUE[]" value="17" /> 

die PHP-Seite, die diese Eingabe verarbeitet erwirbt jeden Wert wie folgt aus:

foreach ($_REQUEST["ORDER_VALUE"] as $order_value) { 
    /... 
} 

Was für die ‚[]‘ verwendet? Angeben, dass mehrere Eingabefelder mit demselben Namen existieren?

Antwort

11

Ja. Grundsätzlich wird PHP wissen, dass alle Werte mit dem gleichen Namen in einem Array gespeichert werden.

Dies gilt übrigens für alle Eingabefelder, nicht nur für versteckte.

1

Die meisten Formularbibliotheken erwarten, dass der Autor angibt, ob sie ein Datenelement als String oder String-Array behandeln möchten.

Die Autoren von PHP haben sich entschieden, mit dem Rest der Welt inkonsistent zu sein, und erfordern, dass das HTML speziell konstruiert wird.

Wenn Sie eckige Klammern am Ende des Namens einfügen, wird PHP als Datenfeld behandelt.

14

Es übergibt Daten als ein Array an PHP. Wenn Sie HTML-Formulare mit demselben Namen haben, werden diese in Kommalisten wie Checkbox-Listen eingefügt. Hier hat PHP Verarbeitung dass auf eine PHP-Array zu konvertieren basiert auf dem [] wie folgt:

Ihr Ergebnis als Array zu Ihrem PHP-Skript Sie den Namen geschickt zu bekommen, oder Elemente wie folgt aus:

<input name="MyArray[]" /> 
<input name="MyArray[]" /> 
<input name="MyArray[]" /> 
<input name="MyArray[]" /> 

Beachten Sie die eckigen Klammern nach dem Variablennamen, das macht es zu einem Array. Sie können Gruppe die Elemente in verschiedenen Arrays mit den gleichen Namen auf verschiedene Elemente zuweisen:

<input name="MyArray[]" /> 
<input name="MyArray[]" /> 
<input name="MyOtherArray[]" /> 
<input name="MyOtherArray[]" /> 

Dies erzeugt zwei Arrays MyArray und MyOtherArray, die an das PHP-Skript geschickt wird. Es ist auch möglich, spezielle Schlüssel zu Ihrem Arrays zuweisen:

<input name="AnotherArray[]" /> 
<input name="AnotherArray[]" /> 
<input name="AnotherArray[email]" /> 
<input name="AnotherArray[phone]" /> 

http://us2.php.net/manual/en/faq.html.php

Verwandte Themen