如何解决PHP错误'注意:数组到string转换在…'

我有一个PHP文件,试图回显$_POST ,我得到一个错误,这里是代码:

 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>' 

这里是回显POST的代码。

 if(!empty($_POST['G'])){ echo $_POST['C']; } 

但是当代码运行时,我得到一个错误,如:

 Notice: Array to string conversion in C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8 

这个错误是什么意思,我该如何解决?

当你有许多名为C[] HTMLinput时,你在POST数组中获得的是$_POST['C']的这些值的数组。 所以,当你echo时候,你正在试图打印一个数组,所以它只是打印Array和通知。

要正确打印一个数组,你可以循环遍历它并echo每个元素,或者你可以使用print_r

另外,如果你不知道它是一个数组还是一个string或者其他什么,你可以使用var_dump($var)来告诉你它是什么types的,它的内容是什么。 仅用于debugging目的。

如何重现以上提示:

当您将一个裸露的数组发送到如下函数时会发生此消息: echoprint

 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 

在这种情况下,echo和print只会将Array打印到标准输出,然后将通知logging到标准错误。

更明确地说,你可以在php脚本中做到这一点:

创build一个PHP数组,并尝试将这个裸数组打印到stdout:

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

更正1:使用内build的php函数print_r或var_dump:

http://php.net/manual/en/function.print-r.php

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); 

打印:

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

更正2:使用json_encode将数组折叠为jsonstring:

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

更正3:一起连接arrays中的所有单元格:

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

更正4:压制声明:

 error_reporting(0); print(array(1,2,3)); //Prints 'Array' without a Notice. 

为什么发生这种情况?

如果你检查打印和回声的PHP文档,

http://php.net/manual/en/function.print.php

http://php.net/manual/en/function.echo.php

你会看到两个string,而不是数组。 你将一个数组作为一个string传递,一般来说当你犯这样的错误时,PHP将无所事事,或者做一些非常意外的事情。

您在HTML中使用<input name='C[]' 。 这将在PHP中发送表单时创build一个数组。

你正在使用echo $_POST['C']; 来回应该数组 – 这不起作用,而是发出该通知和单词“数组”。

取决于你对代码的其他部分做了什么,你应该使用echo $_POST['C'][0];