الدالة json_encode()‎‎ في PHP

من موسوعة حسوب

(PHP 5 >= 5.2.0, PHP 7, PECL json >= 1.2.0)

تُعيد الدالة json_encode()‎ الدالة‎ قيمة ما على شكل صيغة JSON.

الوصف

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

تُعيد سلسلة نصّيّة على شكل صيغة JSON للقيمة المُدخلة.

يتأثّر الترميز بالخيارات المُعطاة للمُعامِل options ويعتمد ترميز القيم من نوع عدد ذو فاصلة عائمة (float) على القيمة المُحدَّدة في الإعدادات للخيار serialize_precision.

المعاملات

value

وهي القيمة المطلوب ترميزها، يمكن أن تكون من أي نوع عدا الموارد (resource).

يجب ترميز جميع بيانات السّلاسل النصّيّة بصيغة UTF-8.

مُلاحظة:  تعتمد PHP مجموعة عُليا من JSON كما هو مُحدَّد في المعيار الأصلي RFC 7159.

options

خيارات على شكل قناع بت Bitmask، وهي JSON_HEX_QUOT و JSON_HEX_TAG و JSON_HEX_AMP و JSON_HEX_APOS و JSON_NUMERIC_CHECK و JSON_PRETTY_PRINT و JSON_UNESCAPED_SLASHES و JSON_FORCE_OBJECT و JSON_PRESERVE_ZERO_FRACTION و JSON_UNESCAPED_UNICODE و JSON_PARTIAL_OUTPUT_ON_ERROR. يُوجد وصف لسلوك كل من هذه الثّوابت على الصّفحة ثوابت JSON.

depth

يُحدِّد العمق الأقصى، ويجب أن يكون أكبر من الصّفر.

القيم المعادة

تُعيد هذه الدّالّة سلسلة نصّيّة مُرمَّزة بصيغة JSON عند النّجاح، أو القيمة FALSE عند الفشل.

سجل التغيرات

الإصدار الوصف
7.1.0 استُخدِم الخيار serialize_precision بدلًا من الخيار precision عند ترميز القيم من نوع double.
5.6.6 أُضيف الخيار JSON_PRESERVE_ZERO_FRACTION.
5.5.0 أُضيف مُعامِل العمق depth.
5.5.0 أُضيف الخيار JSON_PARTIAL_OUTPUT_ON_ERROR.
5.5.0 تغيّرت القيمة المُعادة عند الفشل من null إلى FALSE.
5.4.0 أُضيفت الخيارات JSON_PRETTY_PRINT، و JSON_UNESCAPED_SLASHES، و JSON_UNESCAPED_UNICODE.
5.3.3 أُضيف الخيار JSON_NUMERIC_CHECK.
5.3.0 أُضيف المُعامِل options.

أمثلة

المثال 1: مثال على استخدام الدالة json_encode()‎

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
 
echo json_encode($arr);
?>

ينتج عن المثال السّابق ما يلي:

{"a":1,"b":2,"c":3,"d":4,"e":5}

المثال 2: مثال على الدالة json_encode()‎ يُظهِر استعمال بعض الخيارات معها

<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9");
 
echo "Normal: ",  json_encode($a), "\n";
echo "Tags: ",    json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ",    json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ",    json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ",     json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ",     json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
 
$b = array();
 
echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
 
$c = array(array(1,2,3));
 
echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
 
$d = array('foo' => 'bar', 'baz' => 'long');
 
echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>