Ich habe eine PHP-Datei, die versucht, eine zu wiederholen, $_POST
und ich erhalte eine Fehlermeldung. Hier ist der Code:
echo "<html>";
echo "<body>";
for($i=0; $i<5;$i++){
echo "<input name='C[]' value='$Texting[$i]' " .
"style='background-color:#D0A9F5;'></input>";
}
echo "</body>";
echo "</html>";
echo '<input type="submit" value="Save The Table" name="G"></input>'
Hier ist der Code zum Echo des POST.
if(!empty($_POST['G'])){
echo $_POST['C'];
}
Aber wenn der Code läuft, bekomme ich eine Fehlermeldung wie:
Notice: Array to string conversion in
C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8
Was bedeutet dieser Fehler und wie behebe ich ihn?
$Texting[i]
ein Tippfehler? Sollte das nicht$Texting[$i]
stattdessen sein?var_dump($Texting)
.Antworten:
Wenn Sie viele HTML-Eingaben mit dem Namen haben, erhalten
C[]
Sie im POST-Array am anderen Ende ein Array dieser Werte in$_POST['C']
. Wenn Sieecho
das tun, versuchen Sie, ein Array zu drucken. Alles, was es tut, ist DruckenArray
und ein Hinweis.Um ein Array richtig zu drucken, durchlaufen Sie es entweder und
echo
jedes Element oder können es verwendenprint_r
.Wenn Sie nicht wissen, ob es sich um ein Array oder eine Zeichenfolge oder was auch immer handelt, können Sie alternativ verwenden, um zu erfahren,
var_dump($var)
um welchen Typ es sich handelt und welchen Inhalt es hat. Verwenden Sie dies nur zum Debuggen.quelle
Was der PHP-Hinweis bedeutet und wie er reproduziert werden kann:
Wenn Sie ein PHP-Array an eine Funktion senden, die eine Zeichenfolge wie:
echo
oder erwartetprint
, konvertiert der PHP-Interpreter Ihr Array in die LiteralzeichenfolgeArray
, werfen Sie diesen Hinweis und fahren Sie fort. Beispielsweise:In diesem Fall gibt die Funktion
print
die Literalzeichenfolge:Array
to stdout aus und protokolliert dann die Benachrichtigung an stderr und fährt fort.Ein weiteres Beispiel in einem PHP-Skript:
Sie haben zwei Möglichkeiten: entweder wandeln Sie Ihr PHP-Array mit einem Array-zu-String-Konverter in String um oder unterdrücken den PHP-Hinweis.
Korrektur 1: Verwenden Sie die eingebaute PHP-Funktion print_r oder var_dump:
http://php.net/manual/en/function.print-r.php oder http://php.net/manual/en/function.var-dump.php
Drucke:
Korrektur 2: Verwenden Sie json_encode, um das Array auf json string zu reduzieren:
Korrektur 3: Zusammenfügen aller Zellen im Array:
Korrektur 4: Unterdrücke die Hinweise:
quelle
Sie verwenden
<input name='C[]'
in Ihrem HTML. Dadurch wird beim Senden des Formulars ein Array in PHP erstellt.Sie verwenden
echo $_POST['C'];
, um dieses Array wiederzugeben - dies funktioniert nicht, sondern gibt stattdessen diesen Hinweis und das Wort "Array" aus.Abhängig davon, was Sie mit dem Rest des Codes gemacht haben, sollten Sie wahrscheinlich verwenden
echo $_POST['C'][0];
quelle
Array to string conversion
In den neuesten Versionen von PHP 7.x ist dies eher ein Fehler als ein Hinweis und verhindert die weitere Codeausführung.Verwenden
print
,echo
auf Array ist keine Option mehr.Das Unterdrücken von Fehlern und Hinweisen ist keine gute Vorgehensweise, insbesondere in Entwicklungsumgebungen und beim Debuggen von Code.
Verwendung
var_dump
,print_r
iterieren durch Werteingabe mitforeach
oderfor
zur Ausgabe von Eingangsdaten für die Namen , die als Eingabe - Arrays deklariert werden (‘name[]
‚)Die häufigste Vorgehensweise zum Abfangen von Fehlern ist die Verwendung von
try/catch
Blöcken. Dies verhindert, dass die Codeausführung unterbrochen wird, was zu möglichen Fehlern imtry
Block führen kann.quelle
Wenn Sie das Ergebnis in einer Variablen erfassen möchten
quelle