php[world] 2018 - Call for Speakers

Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında devingen olarak yüklenmesi halinde kullanılabilir.

Aşağıdaki hata türü sabitleri, json_last_error() tarafından döndürülmektedir.

JSON_ERROR_NONE (integer)
Hata bulunamadı. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_ERROR_DEPTH (integer)
Azami yığın boyutu aşıldı. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_ERROR_STATE_MISMATCH (integer)
Kiplerin eşleşmemesi veya alttan taşma hatalarında oluşur. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_ERROR_CTRL_CHAR (integer)
Denetim karakteri hatası, muhtemelen yanlış kodlanmış. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_ERROR_SYNTAX (integer)
Sözdizimi hatası. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_ERROR_UTF8 (integer)
UTF-8 karakter kodlama hatası, muhtemelen yanlış kodlanmış. PHP 5.3.3 itibariyle geçerli bir sabit.
JSON_ERROR_RECURSION (integer)

json_encode() işlevine iç içe başvurular içeren nesne veya dizi aktarılmış. JSON_PARTIAL_OUTPUT_ON_ERROR seçeneği belirtilirse iç içe başvuruların bulunduğu yerlere NULL yerleştirilir.

PHP 5.5.0 sürümünden itibaren kullanılabilir.

JSON_ERROR_INF_OR_NAN (integer)

json_encode() işlevine NAN veya INF içeren bir değer aktarılmış. JSON_PARTIAL_OUTPUT_ON_ERROR seçeneği belirtilirse bu özel sayıların yerine 0yerleştirilir.

PHP 5.5.0 sürümünden itibaren kullanılabilir.

JSON_ERROR_UNSUPPORTED_TYPE (integer)

json_encode() işlevine desteklenmeyen türde (resource gibi) bir değer aktarılmış. JSON_PARTIAL_OUTPUT_ON_ERROR seçeneği belirtilirse desteklenmeyen değerin yerine NULL yerleştirilir.

PHP 5.5.0 sürümünden itibaren kullanılabilir.

Aşağıdaki sabitler json_encode() altında birleştirilebilir.

JSON_HEX_TAG (integer)
Bütün < ve > karakterleri \u003C ve \u003E karakterlerine dönüştürülürler. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_HEX_AMP (integer)
Bütün & karakterleri \u0026 karakterlerine dönüştürülürler. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_HEX_APOS (integer)
Bütün ' karakterleri \u0027 karakterlerine dönüştürülürler. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_HEX_QUOT (integer)
Bütün " karakterleri \u0022 dönüştürülürler. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_FORCE_OBJECT (integer)
İlişkisel olmayan dizi kullanıldığında çıktıları dizi yerine nesne olmaktadır. Özellikle dizi boş ve çıktı nesne olarak bekleniyorsa çok kullanışlıdır. PHP 5.3.0 sürümünden itibaren kullanılabilir.
JSON_NUMERIC_CHECK (integer)
Sayısal dizgileri sayı olarak ele alınır. PHP 5.3.3 sürümünden itibaren kullanılabilir.
JSON_BIGINT_AS_STRING (integer)
Büyük tamsayılar özgün dizgi değerleriyle ele alınır. PHP 5.4.0 sürümünden itibaren kullanılabilir.
JSON_PRETTY_PRINT (integer)
Dönen veriyi biçimlemek için boşluk karakteri kullanılır. PHP 5.4.0 sürümünden itibaren kullanılabilir.
JSON_UNESCAPED_SLASHES (integer)
/ öncelenmez. PHP 5.4.0 sürümünden itibaren kullanılabilir.
JSON_UNESCAPED_UNICODE (integer)
Çokbaytlı Unicode karakteri sayısal değerleriyle kodlar. (\uXXXX biçimi öntanımlıdır). PHP 5.4.0 sürümünden itibaren kullanılabilir.
add a note add a note

User Contributed Notes 6 notes

up
40
Yzmir Ramirez
3 years 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
20
majid4466 at gmail dot com
1 year ago
To get a really clean json string use these three constants like so:

<?php
$array
= ['€', 'http://example.com/some/cool/page', '337'];
$bad   = json_encode($array);
$good  = json_encode($arrayJSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

// $bad would be  ["\u20ac","http:\/\/example.com\/some\/cool\/page","337"]
// $good would be ["€","http://example.com/some/cool/page",337]
?>
up
3
JuanP
2 years ago
Updated format values list:

    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_PARTIAL_OUTPUT_ON_ERROR => 512
    JSON_PRESERVE_ZERO_FRACTION => 1024
up
-1
ASchmidt at Anamera dot net
29 days ago
In a multi-level array, JSON_FORCE_OBJECT will encode ALL nested numeric arrays as objects.

If your concern was ONLY the first-level array (e.g., to make it suitable as a MySQL JSON column), you could just cast your first-level array to object, e.g.:

<?php
$json
= json_encode( (object) $array, JSON_PRESERVE_ZERO_FRACTION+JSON_UNESCAPED_UNICODE );
?>

Or, if you have large arrays and are concerned about the overhead of object casting, you could append a "null" value beyond the size of the array, which will force the array to become associative:

<?php
$beyond
= count( $array ) + 1;
if ( !
array_key_exists( $beyond, $array) )
    
$array[ $beyond ] = NULL;
$json = json_encode( $array, JSON_PRESERVE_ZERO_FRACTION+JSON_UNESCAPED_UNICODE );
?>

Of course, your later code has to treat an element with a "NULL" value the same as "!isset()", if it iterates the array.
up
-21
on5wis at mac dot com
3 years 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
-30
Anonymous
3 years 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":"धाडस"}
To Top