Tengo un archivo PHP que intenta hacer eco $_POST
y aparece un error, aquí está el código:
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>'
Aquí está el código para repetir el POST.
if(!empty($_POST['G'])){
echo $_POST['C'];
}
Pero cuando se ejecuta el código, aparece un error como:
Notice: Array to string conversion in
C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8
¿Qué significa este error y cómo lo soluciono?
$Texting[i]
un error tipográfico? ¿No debería ser eso en su$Texting[$i]
lugar?var_dump($Texting)
.Respuestas:
Cuando tiene muchas entradas HTML nombradas,
C[]
lo que obtiene en la matriz POST en el otro extremo es una matriz de estos valores en formato$_POST['C']
. Entonces, cuando haceecho
eso, está tratando de imprimir una matriz, por lo que todo lo que hace es imprimirArray
y un aviso.Para imprimir correctamente una matriz, puede recorrerla y
echo
cada elemento, o puede usarprint_r
.Alternativamente, si no sabe si es una matriz o una cadena o lo que sea, puede usar la
var_dump($var)
que le dirá qué tipo es y cuál es su contenido. Úselo solo para fines de depuración.fuente
Qué significa el Aviso de PHP y cómo reproducirlo:
Si envía una matriz de PHP a una función que espera una cadena como:
echo
oprint
, entonces el intérprete de PHP convertirá su matriz a la cadena literalArray
, lanzará este Aviso y continuará. Por ejemplo:En este caso, la función
print
vuelca la cadena literal:Array
a stdout y luego registra el Aviso en stderr y continúa.Otro ejemplo en un script PHP:
Tiene 2 opciones, convertir su matriz PHP en String usando un conversor de matriz a cadena o suprimir el Aviso de PHP.
Corrección 1: use la función php incorporada print_r o var_dump:
http://php.net/manual/en/function.print-r.php o http://php.net/manual/en/function.var-dump.php
Huellas dactilares:
Corrección 2: use json_encode para contraer la matriz a la cadena json:
Corrección 3: Unir todas las celdas de la matriz:
Corrección 4: suprima los Avisos:
fuente
Estás usando
<input name='C[]'
en tu HTML. Esto crea una matriz en PHP cuando se envía el formulario.Está utilizando
echo $_POST['C'];
para hacer eco de esa matriz, esto no funcionará, sino que emite ese aviso y la palabra "Matriz".Dependiendo de lo que hizo con el resto del código, probablemente debería usar
echo $_POST['C'][0];
fuente
Array to string conversion
en las últimas versiones de php 7.x es un error, en lugar de un aviso, y evita la ejecución de más código.Usar
print
,echo
en matriz ya no es una opción.Suprimir errores y avisos no es una buena práctica, especialmente cuando se encuentra en un entorno de desarrollo y todavía se está depurando código.
Uso
var_dump
,print_r
, iterar a través de valor de entrada usandoforeach
ofor
a los datos de entrada de salida para los nombres que se declaran como matrices de entrada ('name[]
')La práctica más común para detectar errores es usar
try/catch
bloques, que nos ayudan a prevenir la interrupción de la ejecución del código que podría causar posibles errores envueltos dentro deltry
bloque.fuente
si desea capturar el resultado en una variable
fuente