J'ai un fichier PHP qui essaie de faire écho a $_POST
et j'obtiens une erreur, voici le 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>'
Voici le code pour faire écho au POST.
if(!empty($_POST['G'])){
echo $_POST['C'];
}
Mais lorsque le code s'exécute, j'obtiens une erreur comme:
Notice: Array to string conversion in
C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8
Que signifie cette erreur et comment y remédier?
$Texting[i]
faute de frappe? Cela ne devrait-il pas être$Texting[$i]
plutôt?var_dump($Texting)
.Réponses:
Lorsque vous avez de nombreuses entrées HTML nommées,
C[]
ce que vous obtenez dans le tableau POST à l'autre extrémité est un tableau de ces valeurs dans$_POST['C']
. Donc, lorsque vous faitesecho
cela, vous essayez d'imprimer un tableau, donc tout ce qu'il fait, c'est imprimerArray
et un avis.Pour imprimer correctement un tableau, vous pouvez soit le parcourir et
echo
chaque élément, soit utiliserprint_r
.Alternativement, si vous ne savez pas s'il s'agit d'un tableau ou d'une chaîne ou autre, vous pouvez utiliser
var_dump($var)
qui vous dira de quel type il s'agit et quel est son contenu. Utilisez-le uniquement à des fins de débogage.la source
Qu'est-ce que l'avis PHP et comment le reproduire:
Si vous envoyez un tableau PHP dans une fonction qui attend une chaîne comme:
echo
ouprint
, alors l'interpréteur PHP convertira votre tableau en chaîne littéraleArray
, lèvera cet avis et continuez. Par exemple:Dans ce cas, la fonction
print
vide la chaîne littérale:Array
vers stdout, puis enregistre l'avis dans stderr et continue.Un autre exemple dans un script PHP:
Vous avez 2 options, soit convertir votre tableau PHP en String à l'aide d'un convertisseur tableau en chaîne, soit supprimer la notice PHP.
Correction 1: utilisez la fonction php intégrée print_r ou var_dump:
http://php.net/manual/en/function.print-r.php ou http://php.net/manual/en/function.var-dump.php
Impressions:
Correction 2: utilisez json_encode pour réduire le tableau en chaîne json:
Correction 3: Rejoindre toutes les cellules du tableau ensemble:
Correction 4: supprimer les avis:
la source
Vous utilisez
<input name='C[]'
dans votre HTML. Cela crée un tableau en PHP lorsque le formulaire est envoyé.Vous utilisez
echo $_POST['C'];
pour faire écho à ce tableau - cela ne fonctionnera pas, mais émettra plutôt cet avis et le mot «Array».En fonction de ce que vous avez fait avec le reste du code, vous devriez probablement utiliser
echo $_POST['C'][0];
la source
Array to string conversion
dans les dernières versions de php 7.x est une erreur, plutôt qu'un avertissement, et empêche la poursuite de l'exécution du code.Utiliser
print
,echo
on array n'est plus une option.La suppression des erreurs et des avis n'est pas une bonne pratique, en particulier dans un environnement de développement et toujours en train de déboguer du code.
Utilisation
var_dump
,print_r
, itérer à travers la valeur d'entrée à l' aideforeach
oufor
à des données d'entrée de sortie pour les noms qui sont déclarés comme des tableaux d'entrée ( »name[]
« )La pratique la plus courante pour détecter les erreurs consiste à utiliser des
try/catch
blocs, ce qui nous aide à empêcher l'interruption de l'exécution du code qui pourrait provoquer des erreurs encapsulées dans untry
bloc.la source
si vous souhaitez capturer le résultat dans une variable
la source