الفرق بين المراجعتين ل"PHP/json encode"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
سطر 23: سطر 23:
 
=== <code>options</code> ===
 
=== <code>options</code> ===
 
خيارات على شكل قناع بت Bitmask، وهي <code>JSON_HEX_QUOT</code> و <code>JSON_HEX_TAG</code> و <code>JSON_HEX_AMP</code> و <code>JSON_HEX_APOS</code> و <code>JSON_NUMERIC_CHECK</code> و <code>JSON_PRETTY_PRINT</code> و <code>JSON_UNESCAPED_SLASHES</code> و <code>JSON_FORCE_OBJECT</code> و <code>JSON_PRESERVE_ZERO_FRACTION</code> و <code>JSON_UNESCAPED_UNICODE</code> و <code>JSON_PARTIAL_OUTPUT_ON_ERROR</code>. يُوجد وصف لسلوك كل من هذه الثّوابت على الصّفحة [http://php.net/manual/en/json.constants.php ثوابت JSON].
 
خيارات على شكل قناع بت Bitmask، وهي <code>JSON_HEX_QUOT</code> و <code>JSON_HEX_TAG</code> و <code>JSON_HEX_AMP</code> و <code>JSON_HEX_APOS</code> و <code>JSON_NUMERIC_CHECK</code> و <code>JSON_PRETTY_PRINT</code> و <code>JSON_UNESCAPED_SLASHES</code> و <code>JSON_FORCE_OBJECT</code> و <code>JSON_PRESERVE_ZERO_FRACTION</code> و <code>JSON_UNESCAPED_UNICODE</code> و <code>JSON_PARTIAL_OUTPUT_ON_ERROR</code>. يُوجد وصف لسلوك كل من هذه الثّوابت على الصّفحة [http://php.net/manual/en/json.constants.php ثوابت JSON].
 +
 +
=== <code>depth</code> ===
 +
يُحدِّد العمق الأقصى، ويجب أن يكون أكبر من الصّفر.
 +
 +
== القيم المعادة ==
 +
تُعيد هذه الدّالّة [http://php.net/manual/en/language.types.string.php سلسلة نصّيّة] مُرمَّزة بصيغة JSON عند النّجاح، أو القيمة <code>FALSE</code> عند الفشل.
 +
 +
== سجل التغيرات ==
 +
{| class="wikitable"
 +
|الإصدار
 +
|الوصف
 +
|-
 +
|7.1.0
 +
|استُخدِم الخيار [http://php.net/manual/en/ini.core.php#ini.serialize-precision serialize_precision] بدلًا من الخيار [http://php.net/manual/en/ini.core.php#ini.precision precision] عند ترميز القيم من نوع <code>double</code>.
 +
|-
 +
|5.6.6
 +
|أُضيف الخيار <code>JSON_PRESERVE_ZERO_FRACTION</code>.
 +
|-
 +
|5.5.0
 +
|أُضيف مُعامِل العمق <code>depth</code>.
 +
|-
 +
|5.5.0
 +
|أُضيف الخيار <code>JSON_PARTIAL_OUTPUT_ON_ERROR</code>.
 +
|-
 +
|5.5.0
 +
|تغيّرت القيمة المُعادة عند الفشل من <code>null</code> إلى <code>FALSE</code>.
 +
|-
 +
|5.4.0
 +
|أُضيفت الخيارات <code>JSON_PRETTY_PRINT</code>، و <code>JSON_UNESCAPED_SLASHES</code>، و <code>JSON_UNESCAPED_UNICODE</code>.
 +
|-
 +
|5.3.3
 +
|أُضيف الخيار <code>JSON_NUMERIC_CHECK</code>.
 +
|-
 +
|5.3.0
 +
|أُضيف المُعامِل <code>options</code>.
 +
|}
 +
 +
== أمثلة ==
 +
 +
=== '''المثال 1:''' مثال على استخدام الدالة <code>json_encode()‎</code> ===
 +
<syntaxhighlight lang="php">
 +
<?php
 +
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
 +
 +
echo json_encode($arr);
 +
?>
 +
 +
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight>
 +
{"a":1,"b":2,"c":3,"d":4,"e":5}
 +
</syntaxhighlight>
 +
 +
=== '''المثال 2:''' مثال على الدالة <code>json_encode()</code>‎ يُظهِر استعمال بعض الخيارات معها ===
 +
<syntaxhighlight lang="php">
 +
<?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";
 +
?>
 +
 +
</syntaxhighlight>

مراجعة 21:50، 9 أبريل 2018

(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";
?>