解决PHP错误:将数组转换为字符串时的注意事项
P粉538462187
2023-08-21 12:23:52
<p>我有一个PHP文件,试图输出一个<code>$_POST</code>,但是我得到了一个错误,下面是代码:</p>
<pre class="brush:php;toolbar:false;">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>'</pre>
<p>这里是输出POST的代码。</p>
<pre class="brush:php;toolbar:false;">if(!empty($_POST['G'])){
echo $_POST['C'];
}</pre>
<p>但是当代码运行时,我得到了一个错误,像这样:</p>
<pre class="brush:php;toolbar:false;">Notice: Array to string conversion in
C:xampphtdocsPHISFinalSubmissionOfTheFormPHP.php on line 8</pre>
<p>这个错误是什么意思,我该如何修复它?</p>
PHP Notice的含义及如何重现:
如果你将一个PHP数组传递给一个期望字符串的函数,比如
echo
或print
,那么PHP解释器会将你的数组转换为字面字符串Array
,抛出这个Notice并继续执行。例如:在这种情况下,函数
print
将字面字符串Array
输出到stdout,然后将Notice记录到stderr并继续执行。另一个PHP脚本的例子:
修正方法1:使用foreach循环访问数组元素
http://php.net/foreach
输出:
或者包含数组键名:
输出:
注意,数组元素也可以是数组。在这种情况下,可以再次使用
foreach
或使用数组语法访问内部数组元素,例如$row['name']
修正方法2:将数组中的所有单元格连接在一起:
如果只是一个普通的一维数组,可以使用分隔符将所有单元格连接成一个字符串:
修正方法3:将复杂结构的数组转换为字符串:
如果你的数组具有复杂的结构,但仍需要将其转换为字符串,可以使用http://php.net/json_encode
输出:
快速查看数组结构:使用内置的php函数
如果只是为了调试目的而检查数组内容,可以使用以下函数之一。请记住,var_dump是其中最详细的,通常首选用于此目的
示例:
输出:
当你有很多命名为
C[]
的HTML输入时,你在POST数组的另一端得到的是这些值的数组$_POST['C']
。所以当你echo
它时,你正在尝试打印一个数组,所以它只会打印Array
和一个提示。要正确打印一个数组,你可以循环遍历它并
echo
每个元素,或者你可以使用print_r
。另外,如果你不知道它是一个数组还是一个字符串或其他什么,你可以使用
var_dump($var)
,它会告诉你它是什么类型和它的内容是什么。仅用于调试目的。