php[world] 2015 Schedule Announced

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

次の定数は、json_last_error() が返すエラーの型を表します。

JSON_ERROR_NONE (integer)
エラーが発生しませんでした。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_ERROR_DEPTH (integer)
スタックの深さが最大に達しました。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_ERROR_STATE_MISMATCH (integer)
アンダーフローあるいはモードの不一致が発生しました。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_ERROR_CTRL_CHAR (integer)
制御文字エラー。おそらくエンコードが間違っています。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_ERROR_SYNTAX (integer)
構文エラー。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_ERROR_UTF8 (integer)
正しくエンコードされていないなど、不正な形式の UTF-8 文字。 この定数は PHP 5.3.3 以降で使用可能です。
JSON_ERROR_RECURSION (integer)

json_encode() に渡した配列やオブジェクトに再帰参照が含まれており、エンコードできません。 JSON_PARTIAL_OUTPUT_ON_ERROR オプションを指定した場合は、 再帰参照の部分を NULL にエンコードします。

この定数は PHP 5.5.0 以降で使用可能です。

JSON_ERROR_INF_OR_NAN (integer)

json_encode() に渡した値の中に NAN あるいは INF が含まれています。 JSON_PARTIAL_OUTPUT_ON_ERROR オプションを指定した場合は、 これらの特殊な数値を 0 にエンコードします。

この定数は PHP 5.5.0 以降で使用可能です。

JSON_ERROR_UNSUPPORTED_TYPE (integer)

json_encode() が対応していない型、たとえば resource などが渡されました。 JSON_PARTIAL_OUTPUT_ON_ERROR オプションを指定した場合は、 これらを NULL にエンコードします。

この定数は PHP 5.5.0 以降で使用可能です。

次の定数は、 json_encode() のオプションとして組み合わせて使用します。

JSON_HEX_TAG (integer)
すべての < および > をそれぞれ \u003C および \u003E に変換します。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_HEX_AMP (integer)
すべての & を \u0026 に変換します。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_HEX_APOS (integer)
すべての ' を \u0027 に変換します。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_HEX_QUOT (integer) この定数は PHP 5.3.0 以降で使用可能です。
すべての " を \u0022 に変換します。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_FORCE_OBJECT (integer)
非連想配列を使用した場合に、配列ではなくオブジェクトを出力します。 出力を受け取る側がオブジェクトを期待しており、配列が空っぽである場合などに特に便利です。 この定数は PHP 5.3.0 以降で使用可能です。
JSON_NUMERIC_CHECK (integer)
数値形式の文字列を数値としてエンコードします。 PHP 5.3.3 以降で使用可能です。
JSON_BIGINT_AS_STRING (integer)
大きな整数値を、文字列型でエンコードします。 PHP 5.4.0 以降で使用可能です。
JSON_PRETTY_PRINT (integer)
返される結果の書式を、スペースを使って整えます。 PHP 5.4.0 以降で使用可能です。
JSON_UNESCAPED_SLASHES (integer)
/ をエスケープしません。 PHP 5.4.0 以降で使用可能です。
JSON_UNESCAPED_UNICODE (integer)
マルチバイト Unicode 文字をそのままの形式で扱います (デフォルトでは \uXXXX にエスケープします)。 PHP 5.4.0 以降で使用可能です。
JSON_PRESERVE_ZERO_FRACTION (integer)
float 型の値を常に float 値としてエンコードするようにします。 PHP 5.6.6 以降で使用可能です。
add a note add a note

User Contributed Notes 4 notes

up
28
Yzmir Ramirez
9 months ago
If you curious of the numeric values of the constants, as of JSON 1.2.1, the constants have the following values (not that you should use the numbers directly):

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
up
4
on5wis at mac dot com
2 months ago
since json_encode expects a UTF-8 string there is no need to encode the € symbol.

I suggest you try to echo : json_encode('€');
It gives: "\u20ac"
I'm running PHP 5.6.5 on the CLI, on MacOS X 10.10
up
-2
Anonymous
16 days ago
I am working with "Marathi Language Data" and I found that when I encoded Marathi data to json using json_encode it returned me unicode values of each character like below:

Program :

<?php
$ar
= array("word" => "धाडस");
echo
json_encode($ar);
?>

Output of program is :

{"word":"\u0927\u093e\u0921\u0938"}

This is not expected output because what I need is output as

{"word":"धाडस"}

So I used following code:

<?php
$ar
= array("word" => "धाडस");
echo
json_encode($ar, JSON_UNESCAPED_UNICODE);
?>

And I got the required output as :

{"word":"धाडस"}
up
-9
jgarviahonrado at yahoo dot es
2 months ago
When decoding the euro symbol (€) as below:

json_encode(utf8_encode('€')

json_encode provides the UTF-8 code \u0080, but it would be really interesting to get the \u20AC one.

Maybe a new option could be added to get the current code or the \u20AC one.
To Top