Es gibt hauptsächlich zwei Möglichkeiten, dies zu erreichen:
Serialisieren Sie die Daten auf folgende Weise:
$postvalue = serialize($array);
$array = unserialize($_POST['result'];
Und dann können Sie die gebuchten Werte mit unserialisieren unserialize($postvalue). Weitere Informationen hierzu finden Sie in den PHP-Handbüchern .
Alternativ können Sie die Funktionen json_encode()und json_decode()verwenden, um eine JSON-formatierte serialisierte Zeichenfolge abzurufen. Sie können die übertragenen Daten sogar mit verkleinern gzcompress()(beachten Sie, dass dies leistungsintensiv ist) und die übertragenen Daten mit sichern base64_encode()(damit Ihre Daten in sauberen Nicht-8-Bit-Transportschichten überleben). Dies könnte folgendermaßen aussehen:
$postvalue = base64_encode(json_encode($array));
$array = json_decode(base64_decode($_POST['result']));
Eine nicht empfohlene Methode zum Serialisieren Ihrer Daten (aber sehr kostengünstig) besteht darin, sie einfach implode()in Ihrem Array zu verwenden, um eine Zeichenfolge zu erhalten, bei der alle Werte durch ein bestimmtes Zeichen getrennt sind. Auf der Serverseite können Sie dann das Array mit abrufen explode(). Beachten Sie jedoch, dass Sie kein Zeichen für die Trennung verwenden sollten, das in den Array-Werten auftritt (oder es dann maskiert), und dass Sie die Array-Schlüssel mit dieser Methode nicht übertragen können.
Verwenden Sie die Eigenschaften von speziellen benannten Eingabeelementen:
$postvalue = "";
foreach ($array as $v) {
$postvalue .= '<input type="hidden" name="result[]" value="' .$v. '" />';
}
Auf diese Weise erhalten Sie Ihr gesamtes Array in der $_POST['result']Variablen, wenn das Formular gesendet wird. Beachten Sie, dass hierdurch keine Array-Schlüssel übertragen werden. Sie können dies jedoch erreichen, indem Sie result[$key]als Namen für jedes Feld verwenden.
Jede dieser Methoden hat ihre eigenen Vor- und Nachteile. Was Sie verwenden, hängt hauptsächlich davon ab, wie groß Ihr Array sein wird, da Sie mit all diesen Methoden versuchen sollten, eine minimale Datenmenge zu senden.
Eine andere Möglichkeit, dies zu erreichen, besteht darin, das Array in einer serverseitigen Sitzung zu speichern, anstatt es clientseitig zu übertragen. Auf diese Weise können Sie über die $_SESSIONVariable auf das Array zugreifen und müssen nichts über das Formular übertragen. Schauen Sie sich dazu ein grundlegendes Anwendungsbeispiel für Sitzungen auf php.net an .