У меня есть файл 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
Что означает эта ошибка и как ее исправить?
$Texting[i]
это опечатка? Разве это не должно быть$Texting[$i]
вместо этого?var_dump($Texting)
.Ответы:
Когда у вас есть много входов HTML с именами,
C[]
то, что вы получаете в массиве POST на другом конце, представляет собой массив этих значений в$_POST['C']
. Итак, когда выecho
это делаете , вы пытаетесь распечатать массив, поэтому все, что он делает, это печатьArray
и уведомление.Чтобы правильно распечатать массив, вы либо просматриваете его и
echo
каждый элемент, либо можете использоватьprint_r
.В качестве альтернативы, если вы не знаете, массив это, строка или что-то еще, вы можете использовать,
var_dump($var)
который сообщит вам, какой это тип и каково его содержимое. Используйте это только для целей отладки.источник
Что означает уведомление PHP и как его воспроизвести:
Если вы отправляете массив PHP в функцию, которая ожидает строку типа:
echo
илиprint
, то интерпретатор PHP преобразует ваш массив в буквальную строкуArray
, выдаст это уведомление и продолжит работу. Например:В этом случае функция
print
выгружает буквальную строку:Array
в стандартный вывод, а затем записывает уведомление в стандартный поток и продолжает работу.Другой пример в сценарии PHP:
У вас есть 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
Печать:
Исправление 2: используйте json_encode, чтобы свернуть массив в строку json:
Исправление 3: объединение всех ячеек в массиве вместе:
Исправление 4: подавить уведомления:
источник
Вы используете
<input name='C[]'
в своем HTML. Это создает массив в PHP при отправке формы.Вы используете
echo $_POST['C'];
эхо этого массива - это не сработает, а вместо этого выдаст это уведомление и слово «Массив».В зависимости от того, что вы сделали с остальной частью кода, вам, вероятно, следует использовать
echo $_POST['C'][0];
источник
Array to string conversion
в последних версиях php 7.x это ошибка, а не уведомление, и предотвращает дальнейшее выполнение кода.Использование
print
,echo
в массиве больше не вариант.Подавление ошибок и уведомлений не является хорошей практикой, особенно в среде разработки и все еще отлаживает код.
Используйте
var_dump
,print_r
, итерация через входное значение , используяforeach
илиfor
для вывода входных данных для имен, объявленных в качестве входных массивов (»name[]
«)Наиболее распространенной практикой для обнаружения ошибок является использование
try/catch
блоков, которые помогают нам предотвратить прерывание выполнения кода, которое может вызвать возможные ошибки, заключенные вtry
блок.источник
если вы хотите зафиксировать результат в переменной
источник