Comment résoudre l'erreur PHP ' avis: tableau à la conversion de chaîne dans...'

J'ai un fichier PHP qui essaie de faire écho à un $_POST et je reçois 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 quand le code s'exécute, j'obtiens une erreur comme:

Notice: Array to string conversion in 
C:xampphtdocsPHISFinalSubmissionOfTheFormPHP.php on line 8

Que signifie cette erreur et comment la réparer?

67
demandé sur Eric Leschinski 2013-11-16 14:38:36

3 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']. Ainsi, lorsque vous echo que vous essayez d'imprimer un tableau, de sorte que tout ce qu'il fait est d'imprimer Array " et un avis.

Pour imprimer correctement un tableau, soit vous le parcourez et echo chaque élément, soit vous pouvez utiliser print_r.

Alternativement, si vous ne savez pas si c'est un tableau ou une chaîne ou autre, vous pouvez utiliser var_dump($var) qui vous dira de quel type il s'agit et de quoi il est contenu. Utilisez-le uniquement à des fins de débogage.

73
répondu jadkik94 2013-11-16 10:43:40

Ce Que signifie L'avis PHP et comment le reproduire:

Si vous envoyez un tableau PHP dans une fonction qui attend une chaîne comme: echo ou print, alors L'interpréteur PHP convertira votre tableau en chaîne littérale Array, Lancez cet avis et continuez. Par exemple:

php> print(array(1,2,3))

PHP Notice:  Array to string conversion in 
/usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(591) :
eval()'d code on line 1
Array

Dans ce cas, la fonction print vide la chaîne littérale: Array dans stdout, puis enregistre L'avis sur stderr et continue.

Un autre exemple dans un PHP script:

<?php
    $stuff = array(1,2,3);
    print $stuff;  //PHP Notice:  Array to string conversion in yourfile on line 3
?>

Vous avez 2 options, soit convertir votre tableau PHP en chaîne à L'aide d'un convertisseur array to string, 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

$stuff = array(1,2,3);
print_r($stuff);
$stuff = array(3,4,5);
var_dump($stuff);

Impressions:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
array(3) {
  [0]=>
  int(3)
  [1]=>
  int(4)
  [2]=>
  int(5)
}

Correction 2: Utilisez json_encode pour réduire le tableau en json chaîne:

$stuff = array(1,2,3);
print json_encode($stuff);   //Prints [1,2,3]

Correction 3: joindre toutes les cellules du tableau ensemble:

<?php
    $stuff = array(1,2,3);
    print implode(", ", $stuff);    //prints 1, 2, 3
    print join(',', $stuff);        //prints 1, 2, 3
?>

Correction 4: supprimer les avis:

error_reporting(0);
print(array(1,2,3));    //Prints 'Array' without a Notice.
30
répondu Eric Leschinski 2018-02-21 15:04:43

Vous utilisez <input name='C[]' dans votre code 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 "tableau".

En Fonction de ce que vous avez fait avec le reste du code, vous devriez probablement utiliser echo $_POST['C'][0];

5
répondu Sven 2013-11-16 10:44:52