Tenho um arquivo PHP que tenta ecoar um $_POST
e recebo um erro, aqui está o 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>'
Aqui está o código para ecoar o POST.
if(!empty($_POST['G'])){
echo $_POST['C'];
}
Mas quando o código é executado, recebo um erro como:
Notice: Array to string conversion in
C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8
O que significa esse erro e como faço para corrigi-lo?
$Texting[i]
um erro de digitação? Não deveria ser assim$Texting[$i]
?var_dump($Texting)
.Respostas:
Quando você tem muitas entradas HTML nomeadas,
C[]
o que obtém no array POST, na outra extremidade está um array desses valores em$_POST['C']
. Então, quando você fazecho
isso, está tentando imprimir um array, então tudo o que faz é imprimirArray
e um aviso.Para imprimir corretamente um array, você pode fazer um loop através dele e de
echo
cada elemento, ou pode usarprint_r
.Alternativamente, se você não sabe se é um array ou uma string ou qualquer outra coisa, você pode usar o
var_dump($var)
qual lhe dirá qual é o tipo e qual é o seu conteúdo. Use-o apenas para fins de depuração.fonte
O que significa o aviso PHP e como reproduzi-lo:
Se você enviar um array PHP para uma função que espera uma string como:
echo
orprint
, então o interpretador PHP irá converter seu array em string literalArray
, jogue este Notice e continue. Por exemplo:Nesse caso, a função
print
despeja a string literal:Array
para stdout e, em seguida, registra o Aviso em stderr e continua.Outro exemplo em um script PHP:
Você tem 2 opções, converter seu array PHP em String usando um conversor de array em string ou suprimir o Aviso PHP.
Correção 1: use a função interna do php print_r ou var_dump:
http://php.net/manual/en/function.print-r.php ou http://php.net/manual/en/function.var-dump.php
Impressões:
Correção 2: use json_encode para recolher a matriz para a string json:
Correção 3: juntando todas as células da matriz:
Correção 4: suprimir os Avisos:
fonte
Você está usando
<input name='C[]'
em seu HTML. Isso cria um array em PHP quando o formulário é enviado.Você está usando
echo $_POST['C'];
para ecoar esse array - isso não funcionará, mas em vez disso, emitirá aquele aviso e a palavra "Array".Dependendo do que você fez com o resto do código, você provavelmente deve usar
echo $_POST['C'][0];
fonte
Array to string conversion
nas últimas versões do php 7.x é um erro, ao invés de aviso, e impede a execução de código adicional.Usar
print
,echo
on array não é mais uma opção.Suprimir erros e avisos não é uma boa prática, especialmente quando em ambiente de desenvolvimento e ainda depurando código.
Use
var_dump
,print_r
, iterate através de valor de entrada usandoforeach
oufor
aos dados de entrada de saída para nomes que são declarados como matrizes de entrada ('name[]
')A prática mais comum para detectar erros é usar
try/catch
blocos, o que nos ajuda a evitar a interrupção da execução do código que pode causar possíveis erros encapsulados notry
bloco.fonte
se você deseja capturar o resultado em uma variável
fonte