Как избавиться от PHP Предупреждение: json_encode () ожидает, что параметр 2 будет длинным, задана строка

Предупреждение «json_encode () ожидает, что параметр 2 будет длинным, задана строка» обычно происходит потому, что вместо числа константы вы указываете строку в качестве второго аргумента для json_encode. Это происходит обычно, потому что вы используете несуществующую константу в качестве второго аргумента, например, используя JSON_PRETTY_PRINT в PHP 5.3:

Это в PHP 5.3 вызовет предупреждение, потому что константа будет интерпретироваться как буквенная строка, потому что эта константа была введена начиная с PHP 5.4. То же самое произошло бы со многими константами, которые недоступны в упомянутой версии PHP. В этой статье мы покажем вам 2 способа предотвращения появления этого предупреждения.

А. Используйте постоянное целочисленное значение

Как уже упоминалось, предупреждение возникает, когда константа, указанная вами в качестве второго аргумента в json_encode Функция не существует, поэтому PHP преобразует имя константы в буквальную строку:

Поэтому вам нужно знать целочисленное значение константы, которую вы хотите использовать в PHP 5.3:

JSON_HEX_TAG => 1
JSON_HEX_AMP => 2
JSON_HEX_APOS => 4
JSON_HEX_QUOT => 8
JSON_FORCE_OBJECT => 16
JSON_NUMERIC_CHECK => 32
JSON_UNESCAPED_SLASHES => 64
JSON_PRETTY_PRINT => 128
JSON_UNESCAPED_UNICODE => 256
JSON_ERROR_DEPTH => 1
JSON_ERROR_STATE_MISMATCH => 2
JSON_ERROR_CTRL_CHAR => 3
JSON_ERROR_SYNTAX => 4
JSON_ERROR_UTF8 => 5
JSON_OBJECT_AS_ARRAY => 1
JSON_BIGINT_AS_STRING => 2

Затем просто укажите это в качестве второго аргумента в json_encode метод, например с JSON_PRETTY_PRINT:

Предыдущий фрагмент больше не будет отображать предупреждение и т. Д. С другими константами, которые вы хотите использовать.

Б. Определите JSON-константы самостоятельно

Если вы находитесь в среде PHP 5.3.0, где вы не можете получить доступ к константам JSON, вы можете определить их все где-то в вашем проекте, прежде чем их использовать, поэтому константы будут существовать, и поэтому предупреждение больше не будет появляться :

Определив их, вы сможете использовать свой код как обычно:

Ссылка на основную публикацию
Adblock
detector