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

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(إضافة روابط وإجراء بعض الأمور التنسيقية)
سطر 13: سطر 13:
  
 
== القيم المعادة ==
 
== القيم المعادة ==
تُعيد عدد صحيح. يُمكن للقيمة أن تكون أحد الثوابت التالية:
+
تُعيد عدد صحيح. يُمكن للقيمة أن تكون أحد الثوابت الموجودة في الجدول الآتي، الذي يعرض رموز أخطاء JSON:
 
 
رموز أخطاء JSON
 
 
{| class="wikitable"
 
{| class="wikitable"
|الثابت
+
!الثابت
|المعنى
+
!المعنى
|التوافر
+
!التوافر
 
|-
 
|-
 
|<code>JSON_ERROR_NONE</code>
 
|<code>JSON_ERROR_NONE</code>
سطر 50: سطر 48:
 
|-
 
|-
 
|<code>JSON_ERROR_INF_OR_NAN</code>
 
|<code>JSON_ERROR_INF_OR_NAN</code>
|القيمة التي ستُرمَّز تحوي على [http://php.net/manual/en/function.is-infinite.php INF] (لا نهاية) أو القيمة [https://wiki.hsoub.com/PHP/float NAN] (وهي قيمةٌ لا تُمثِّل عددًا وهي اختصارٌ للعبارة Not-A-Number).
+
|القيمة التي ستُرمَّز تحوي على <code>INF</code> (لا نهاية) أو القيمة <code>NAN</code> (وهي قيمةٌ لا تُمثِّل عددًا وهي اختصارٌ للعبارة Not-A-Number).
 
|PHP 5.5.0
 
|PHP 5.5.0
 
|-
 
|-
سطر 67: سطر 65:
  
 
== أمثلة ==
 
== أمثلة ==
 
+
المثال 1: مثال على الدالة <code>json_last_error()</code>‎<syntaxhighlight lang="php">
=== '''المثال 1:''' مثال على الدالة <code>json_last_error()</code>‎ ===
 
<syntaxhighlight lang="php">
 
 
<?php
 
<?php
 
// سلسلة نصّيّة صالحة بصيغة JSON  
 
// سلسلة نصّيّة صالحة بصيغة JSON  
$json[] = '{"Organization": "PHP Documentation Team"}';
+
$json[] = '{"Organization": "Hsoub"}';
  
 
// خطأ صياغة، استخدمنا في هذه الحالة ' بدلًا من " في السلسلة النصية
 
// خطأ صياغة، استخدمنا في هذه الحالة ' بدلًا من " في السلسلة النصية
$json[] = "{'Organization': 'PHP Documentation Team'}";
+
$json[] = "{'Organization': 'Hsoub'}";
  
  
سطر 110: سطر 106:
 
?>
 
?>
  
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight>
+
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
Decoding: {"Organization": "PHP Documentation Team"} - No errors
+
Decoding: {"Organization": "Hsoub"} - No errors
Decoding: {'Organization': 'PHP Documentation Team'} - Syntax error, malformed JSON
+
Decoding: {'Organization': 'Hsoub'} - Syntax error, malformed JSON
</syntaxhighlight>
+
</syntaxhighlight>المثال 2: استخدام الدالة <code>json_last_error()‎</code> مع الدالة <code>[[PHP/json encode|json_encode()]]</code>‎<syntaxhighlight lang="php">
 
 
=== '''المثال 2:''' استخدام الدالة <code>json_last_error()‎</code> مع الدالة <code>[http://php.net/manual/en/function.json-encode.php json_encode()]</code>‎ ===
 
<syntaxhighlight lang="php">
 
 
<?php
 
<?php
 
// تسلسل غير صالح بترميز UTF-8
 
// تسلسل غير صالح بترميز UTF-8
سطر 127: سطر 120:
 
?>
 
?>
  
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight>
+
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
 
string(4) "null"
 
string(4) "null"
 
bool(true)
 
bool(true)
سطر 133: سطر 126:
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
* الدالة <code>[http://php.net/manual/en/function.json-last-error-msg.php json_last_error_msg()]</code>‎: إعادة الخطأ النّاتج عن آخر استدعاء للدالة <code>json_encode()</code>‎ أو <code>json_decode()</code>‎ على شكل سلسلة نصّيّة.
+
* الدالة <code>[[PHP/json last error msg|json_last_error_msg()]]</code>‎: إعادة الخطأ النّاتج عن آخر استدعاء للدالة [[PHP/json encode|<code>json_encode()</code>‎]] أو [[PHP/json decode|<code>json_decode()</code>‎]] على شكل سلسلة نصّيّة.
* الدالة <code>[http://php.net/manual/en/function.json-decode.php json_decode()]</code>‎: فك ترميز سلسلة JSON.
+
* الدالة <code>[[PHP/json decode|json_decode()]]</code>‎: فك ترميز سلسلة JSON.
* الدالة <code>[http://php.net/manual/en/function.json-encode.php json_encode()‎]</code>: إعادة قيمة ما على شكل صيغة JSON.
+
* الدالة <code>[[PHP/json encode|json_encode()‎]]</code>: إعادة قيمة ما على شكل صيغة JSON.
  
 
== مصادر ==
 
== مصادر ==
 
* [http://php.net/manual/en/function.json-last-error.php صفحة الدالة json_last_error في توثيق PHP الرسمي].
 
* [http://php.net/manual/en/function.json-last-error.php صفحة الدالة json_last_error في توثيق PHP الرسمي].

مراجعة 03:15، 10 أبريل 2018

(PHP 5 >= 5.3.0, PHP 7)

تُعيد الدالة json_last_error()‎ آخر خطأ حاصل.

الوصف

int json_last_error ( void )

تُعيد آخر خطأ حاصل (إن كان هنالك خطأ) خلال آخر عمليّة ترميز أو فك ترميز لصيغة JSON.

المعاملات

لا تملك هذه الدالة أي مُعامِلات.

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

تُعيد عدد صحيح. يُمكن للقيمة أن تكون أحد الثوابت الموجودة في الجدول الآتي، الذي يعرض رموز أخطاء JSON:

الثابت المعنى التوافر
JSON_ERROR_NONE لم يحصل أي خطأ.
JSON_ERROR_DEPTH تم تجاوز القيمة القصوى للعمق.
JSON_ERROR_STATE_MISMATCH صيغة JSON غير صالحة.
JSON_ERROR_CTRL_CHAR خطأ محرف التّحكّم، غالبًا ترميز غير صحيح.
JSON_ERROR_SYNTAX خطأ في الصّياغة.
JSON_ERROR_UTF8 أحرف ترميز UTF-8 مُشوّهة، مُرمَّزة غالبًا بشكل غير صحيح. PHP 5.3.3
JSON_ERROR_RECURSION وجود مَرجِع تكراري (recursive reference) أو أكثر في القيمة التي ستُرمَّز. PHP 5.5.0
JSON_ERROR_INF_OR_NAN القيمة التي ستُرمَّز تحوي على INF (لا نهاية) أو القيمة NAN (وهي قيمةٌ لا تُمثِّل عددًا وهي اختصارٌ للعبارة Not-A-Number). PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE أُدخِلت قيمة من نوع لا يُمكِن ترميزه. PHP 5.5.0
JSON_ERROR_INVALID_PROPERTY_NAME أُدخِل اسم خاصّيّة لا يُمكِن ترميزه. PHP 7.0.0
JSON_ERROR_UTF16 أحرف ترميز UTF-16 مُشوّهة، مُرمَّزة غالبًا بشكل غير صحيح. PHP 7.0.0

أمثلة

المثال 1: مثال على الدالة json_last_error()

<?php
// سلسلة نصّيّة صالحة بصيغة JSON 
$json[] = '{"Organization": "Hsoub"}';

// خطأ صياغة، استخدمنا في هذه الحالة ' بدلًا من " في السلسلة النصية
$json[] = "{'Organization': 'Hsoub'}";


foreach ($json as $string) {
    echo 'Decoding: ' . $string;
    json_decode($string);

    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - No errors';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Maximum stack depth exceeded';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Underflow or the modes mismatch';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Unexpected control character found';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Syntax error, malformed JSON';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
        break;
        default:
            echo ' - Unknown error';
        break;
    }

    echo PHP_EOL;
}
?>

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

Decoding: {"Organization": "Hsoub"} - No errors
Decoding: {'Organization': 'Hsoub'} - Syntax error, malformed JSON

المثال 2: استخدام الدالة json_last_error()‎ مع الدالة json_encode()

<?php
// تسلسل غير صالح بترميز UTF-8
$text = "\xB1\x31";

$json  = json_encode($text);
$error = json_last_error();

var_dump($json, $error === JSON_ERROR_UTF8);
?>

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

string(4) "null"
bool(true)

انظر أيضًا

مصادر