Содержание
Предупреждение «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, вы можете определить их все где-то в вашем проекте, прежде чем их использовать, поэтому константы будут существовать, и поэтому предупреждение больше не будет появляться :
Определив их, вы сможете использовать свой код как обычно: