ilostmyid2 Ответов: 1

Как подавить предупреждение PHP?


Предупреждение таково:
PHP Notice: преобразование массива в строку
Когда вы сталкиваетесь с массивом вместо строки, функция implode заменяет "массив", и этого мне достаточно. Итак, вывод функции происходит так, как я хочу. Я просто хочу, чтобы он не выдавал предупреждающее сообщение в error.log.
Как его подавить?

подробности:
например, когда я запускаю следующий код:
#!/usr/bin/php

<?php
$ar = array(0, array(0, 1), 1);
$str = implode(', ', $ar);
error_log($str);
?>

я получаю следующий вывод:
PHP Notice:  Array to string conversion in /home/behnama/test/php/implode.php on line 5
0, Array, 1

мой вопрос снова звучит так: как я могу подавить сообщение об ошибке, пока результат такой, как я ожидаю?

Что я уже пробовал:

Я искал его повсюду и не нашел ни малейшей зацепки.

Richard MacCutchan

Пожалуйста, отредактируйте свой вопрос и добавьте код, который вызывает ошибку, а также опубликуйте точное сообщение и объясните, когда это происходит.

Patrice T

Чтобы удалить секретное предупреждение, вы должны сделать секретное исправление в своем секретном коде.

ilostmyid2

извините, я думал, что это достаточно ясно. теперь я обновил его с помощью примера.

Richard MacCutchan

Почему вы думаете, что это ясно, если мы не можем видеть ваш код или полное сообщение? Это две наиболее важные части информации.

Richard MacCutchan

Я просто запустил этот код и не получил сообщение.

ilostmyid2

так что, может быть, что-то изменилось в конфигурационных файлах php?

[no name]

Вы можете воспроизвести его например вставив его внутрь http://phptester.net/

ilostmyid2

О, спасибо. Я сделал. это и есть результат:
Обратите внимание на преобразование массива в строку в строке № 5

Mohibur Rashid

каков ваш ожидаемый результат?

ilostmyid2

линия под ним:
0, массив, 1

Mohibur Rashid

Мое предложение было бы таково: не меняйте уровень предупреждения. Вместо этого добавьте @ в начале функции.

1 Ответов

Рейтинг:
12

User 7429338

Поскольку ваш вопрос заключается именно в подавлении сообщения об ошибке, а не в устранении проблемы, вы можете использовать error_reporting чтобы отключить уведомления:

error_reporting(E_ALL & ~E_NOTICE);

Я бы не советовал, но вы можете это сделать, если хотите.


ilostmyid2

спасибо, будем искать.
после взрыва я могу снова вызвать эту функцию:
предназначенных(состав e_all);
так что другие ошибки не будут подавлены.
но в сущности, почему это должно было быть ошибкой?!...

[no name]

На самом деле это не ошибка, а просто уведомление :)
Он сообщает вам, что суб-массив array(0, 1) был преобразован в строку как "Array", что может быть неожиданным.

ilostmyid2

я все равно этого жду... :)