Как решить ошибку PHP 'Примечание: массив для преобразования строк в...' - программирование
Подтвердить что ты не робот

Как решить ошибку PHP 'Примечание: массив для преобразования строк в...'

У меня есть 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

Что означает эта ошибка и как ее исправить?

4b9b3361

Ответ 1

Когда у вас есть много входов HTML с именем C[], то, что вы получаете в массиве POST на другом конце, находится массив этих значений в $_POST['C']. Поэтому, когда вы echo, вы пытаетесь напечатать массив, поэтому все, что он делает, это print Array и уведомление.

Чтобы правильно напечатать массив, вы либо пропустите его, либо echo каждый элемент, либо вы можете использовать print_r.

В качестве альтернативы, если вы не знаете, есть ли это массив или строка или что-то еще, вы можете использовать var_dump($var), который расскажет вам, какой тип он и что он представляет. Используйте это только для целей отладки.

Ответ 2

Как воспроизвести вышеупомянутое Уведомление:

Сообщение появляется, когда вы отправляете пустой массив в функцию типа: echo или print:

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 script:

Создайте массив PHP и попробуйте напечатать пустой массив в stdout:

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

Коррекция 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.

Почему это происходит?

Если вы изучите документацию php для печати и эха,

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

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

Вы увидите, что оба берут строки, а не массивы. Вы передаете массив как строку, в общем, когда вы делаете подобные ошибки, PHP ничего не сделает или сделает что-то очень неожиданное.

Ответ 3

Вы используете <input name='C[]' в своем HTML. Это создает массив в PHP при отправке формы.

Вы используете echo $_POST['C']; для эха этого массива - это не сработает, а вместо этого опубликует это уведомление и слово "Массив".

В зависимости от того, что вы сделали с остальной частью кода, вы должны, вероятно, использовать echo $_POST['C'][0];