如何解决PHP错误“注意:数组到字符串转换...”

2022-08-30 06:41:30

我有一个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

此错误是什么意思,我该如何解决它?


答案 1

当您有许多 HTML 输入命名时,您在另一端的 POST 数组中得到的是 这些值的数组。因此,当您这样做时,您正在尝试打印数组,因此它所做的只是打印和通知。C[]$_POST['C']echoArray

要正确打印数组,可以循环遍历数组和每个元素,也可以使用 。echoprint_r

或者,如果您不知道它是数组还是字符串或其他任何内容,则可以使用它来告诉您它是什么类型以及它的内容是什么。仅将其用于调试目的。var_dump($var)


答案 2

PHP 声明的含义以及如何重现它:

如果你将一个PHP数组发送到一个函数中,该函数需要一个类似:or的字符串,那么PHP解释器会将您的数组转换为文字字符串,抛出此通知并继续前进。例如:echoprintArray

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

在这种情况下,该函数将文本字符串:转储到 stdout,然后将通知记录到 stderr 并继续前进。printArray

PHP 脚本中的另一个示例:

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

更正 1:使用 foreach 循环访问数组元素

http://php.net/foreach

$stuff = array(1,2,3);
foreach ($stuff as $value) {
    echo $value, "\n";
}

指纹:

1
2
3

或与阵列键一起

$stuff = array('name' => 'Joe', 'email' => 'joe@example.com');
foreach ($stuff as $key => $value) {
    echo "$key: $value\n";
}

指纹:

name: Joe
email: joe@example.com

请注意,数组元素也可以是数组。在这种情况下,要么再次使用,要么使用数组语法访问此内部数组元素,例如foreach$row['name']

更正 2:将数组中的所有单元格连接在一起:

如果它只是一个普通的一维数组,你可以简单地使用分隔符将所有单元格连接成一个字符串:

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

更正 3:字符串化具有复杂结构的数组:

如果您的数组具有复杂的结构,但无论如何您都需要将其转换为字符串,请使用 http://php.net/json_encode

$stuff = array('name' => 'Joe', 'email' => 'joe@example.com');
print json_encode($stuff);

指纹

{"name":"Joe","email":"joe@example.com"}

快速浏览数组结构:使用内置的php函数

如果只想检查数组内容以进行调试,请使用以下函数之一。请记住,var_dump是其中最翔实的信息,因此通常为此目的是首选

例子

$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)
}