Как решить ошибку PHP ' Примечание: преобразование массива в строку в...'
у меня есть PHP-файл, который пытается повторить a $_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>'
вот код, чтобы повторить сообщение.
if(!empty($_POST['G'])){
echo $_POST['C'];
}
но когда код запускается я получаю ошибку, как:
Notice: Array to string conversion in
C:xampphtdocsPHISFinalSubmissionOfTheFormPHP.php on line 8
что означает эта ошибка и как это исправить?
3 ответа:
когда у вас есть много HTML-входов с именем
C[]
то, что вы получаете в массиве POST на другом конце, является массивом этих значений в$_POST['C']
. Так что когда выecho
то, что вы пытаетесь напечатать массив, так что все, что он делает, это печатьArray
и уведомления.чтобы правильно напечатать массив, вы либо перебираете его и
echo
каждый элемент, или вы можете использоватьprint_r
.кроме того, если вы не знаете, если это массив или строка или что-то еще, вы можете использовать
var_dump($var)
что расскажу вам, что это за тип и что это за контент. Используйте это только для отладки.
что означает уведомление PHP и как его воспроизвести:
если вы отправляете массив PHP в функцию, которая ожидает строку типа:
echo
илиArray
, бросьте это уведомление и продолжайте идти. Например: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
в этом случае функция
Array
в stdout, а затем регистрирует уведомление в stderr и продолжает идти.еще один пример в PHP скрипте:
<?php $stuff = array(1,2,3); print $stuff; //PHP Notice: Array to string conversion in yourfile on line 3 ?>
у вас есть 2 варианта: либо привести свой массив PHP в строку с помощью преобразователя массива в строку, либо подавить уведомление PHP.
исправление 1: используйте встроенную функцию 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, чтобы свернуть массив в строку json:
$stuff = array(1,2,3); print json_encode($stuff); //Prints [1,2,3]
исправление 3: объединение всех ячеек в массиве вместе:
<?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.
вы используете
<input name='C[]'
в HTML. Это создает массив в PHP при отправке формы.вы используете
echo $_POST['C'];
чтобы эхо этого массива - это не будет работать, но вместо этого испускать это уведомление и слово "массив".В зависимости от того, что вы сделали с остальной частью кода, Вы, вероятно, должны использовать
echo $_POST['C'][0];