در این بخش از آموزش PHP قصد داریم به شما نحوه تبدیل JSON به آرایه در php توسط تابع json_decode و به همراه مثال های کاربری نشان بدیم.
همچنین محدودیت و قوانین توابع کار با رشته جیسون (json) را با مثال های ساده تبدیل JSON به آرایه در php را مرور می کنیم تا جواب سوال چگونه آرایه های PHP را به JSON تبدیل کنیم؟ را بگیرید.
تبدیل JSON به آرایه در php
مثال زیر رشته JSON شامل نام حیوانات و تعداد آن است. خروجی تبدیل این جیسون, آرایه انجمنی (Associative Arrays) خواهد بود (کلید یا ایندکس نام حیوانات و مقدار آن تعداد است )
ما از تابع json_decode()
در PHP به همراه پارامتر بولین true استفاده می کنیم تا خروجی ما یک آرایه باشد (اگر false
بزارید خروجی یک آبجکت بصورت stdClass
خواهد بود)
1 2 3 4 5 6 7 8 |
<?php // JSON string in PHP Array $jsonString = '{"Lion":101,"Tiger":102,"Crocodile":103,"Elephant":104}'; $phpArray = json_decode($jsonString, true); // display the converted PHP array var_dump($phpArray); ?> |
خروجی
1 2 3 4 5 6 7 8 9 10 |
array(4) { ["Lion"]=> int(101) ["Tiger"]=> int(102) ["Crocodile"]=> int(103) ["Elephant"]=> int(104) } |
در دیاگرام زیر می بینید که ورودی ما به تابع json_decode()
یک رشته جیسون است و خروجی شئ را برگشت می دهد.
تابع json_decode() در PHP
این همان تابع اصلی برای تبدیل JSON به آرایه در php است و سینتکس آن بصورت زیر می باشد :
1 2 3 4 5 6 |
json_decode( string $json, ?bool $associative = null, int $depth = 512, int $flags = 0 ): mixed |
$json
– رشته جیسون ورودی$associative
– ورودی بولین که مشخص می کند فرمت خروجی آرایه یا آبجکت باشد$depth
– محدودیت دیکد کردن تو در تو$flag
– ثابت از پیش تعیین شده که مشخص می کند مثلا در زمان خطا در تبدیل JSON به آرایه در php چه کاری انجام شود
اطلاعات بیشتر در مورد تابع json_decode() در PHP را می توانید از لینک قبلی بدست آورید.
تبدیل رشته JSON به شئ (Object)
در این کد ما مقدار true را بعنوان پارامتر دوم به تابع json_decode
پاس نمی دهیم و خروجی به جای آرایه, یک آبجکت خواهد بود.
1 2 3 4 5 6 7 |
<?php // JSON string in PHP Array $jsonString = '{"name":"Lion"}'; $phpObject = json_decode($jsonString); print $phpObject->name; ?> |
خروجی
1 |
Lion |
اشتباه رایج در تبدیل JSON به آرایه در php
در مثال زیر ما یک رشته جیسون معتبر در جاواسکریپت نه PHP را قرار دادیم. مشکل اصلی استفاده از تک کوتیشن ‘
است که باید به دابل کوتیشن “
تغییر داده شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // 1. key and value should be within double quotes $notValidJson = "{ 'lion': 'animal' }"; json_decode($notValidJson); // will return null // 2. without a quote is also not allowed $notValidJson = '{ lion: "animal" }'; json_decode($notValidJson); // will return null // 3. should not have a comma at the end $notValidJson = '{ "lion": "animal", }'; json_decode($notValidJson); // will return null ?> |
تبدیل JSON با اعداد بزرگ
این کار با ست کردن پارامتر bitmask که یکی از ثابت های تعریف شده جیسون هست, قابل انجام است.
ثابت JSON_BIGINT_AS_STRING
برای تبدیل رشته JSON با داده های عددی بزرگ استفاده می شود.
1 2 3 4 5 |
<?php $jsonString = '{"largeNumber": 12345678901234567890123}'; var_dump(json_decode($jsonString, false, 512, JSON_BIGINT_AS_STRING)); ?> |
خروجی
1 2 3 4 |
object(stdClass)#1 (1) { ["number"]=> string(20) "12345678901234567890123" } |
هندل کردن خطاهای تبدیل JSON به آرایه در php
تابع json_last_error()
برای برگشت دادن آخرین خطای ایجاد شده استفاده می شود.
مثال زیر نحوه هندل کردن خطاهای مختلف در هنگام تبدیل JSON به آرایه در php را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $jsonString = '{"Lion":101,"Tiger":102,"Crocodile":103,"Elephant":104}'; json_decode($jsonString); switch (json_last_error()) { case JSON_ERROR_DEPTH: echo 'Error: Nesting limit exceeded.'; break; case JSON_ERROR_STATE_MISMATCH: echo 'Error: Modes mismatch.'; break; case JSON_ERROR_CTRL_CHAR: echo 'Error: Unexpected character found.'; break; case JSON_ERROR_SYNTAX: echo 'Error: Syntax error, invalid JSON.'; break; case JSON_ERROR_UTF8: echo 'Error: UTF-8 characters incorrect encoding.'; break; default: echo 'Unexpected error.'; break; } ?> |
تبدیل جیسون به آرایه (Array) و آرایه به جیسون (JSON) برابر نیست
1 2 3 4 5 6 |
<?php $jsonString = '{"0": "No", "1": "Yes"}'; // convert json to an associative array $array = json_decode($jsonString, true); print json_encode($array) . PHP_EOL; ?> |
خروجی
["No","Yes"]
آبجکت PHP حالا به آرایه PHP تبدیل شده است و مطمئنم انتظار این را نداشتید.
Encode -> Decode -> Encode
کد بالا داده در شکل اولیه خود برگشت نمی دهد.
خروجی دیکد کردن آرایه های PHP و اینکد کردن آرایه ها یکسان نیستند. اما, خروجی دیکد شئ stdClass
و اینکد شئ stdClass
همیشه برابر هستند.
بنابراین اگر قصد دارید تبدیل چرخه ای بین آرایه های PHP و رشته های JSON را انجام بدید, اول آرایه های PHP را به شئ تبدیل کنید سپس آن را جیسون کنید.
اگر میخواهید نحوه دریافت خروحی JSON از API را با استفاده از درخواست های CURL در PHP یاد بگیرید آموزش زیر را ببینید :
ارسال و دریافت jSON توسط cURL در php
جمع بندی آموزش تبدیل JSON به آرایه در php
در این آموزش کامل نحوه تبدیل رشته جیسون به آرایه و آبجکت در PHP را یاد گرفتید و مطمین باشید با وجود اینکه بالای ۹۰درصد API ها از خروجی جیسون برای دادن پاسخ به درخواست ها استفاده می کنند, یادگیری این موارد بسیار در روند توسعه و نوشتن اسکریپت ها به شما کمک می کند.
امیدوارم در این بخش آموزش PHP, از آموزش تبدیل JSON به آرایه در php نهایت استفاده را برده باشید.
هر سوالی داشتید، از قسمت نظرات ارسال کنید. سریعا ، پاسخگوی سوالات شما هستیم.
موفق و پیروز باشید
سلام و درود .
پاسخ دریافتی از سایت لینک دانلود میباشد . نحوه ذخیره لینک فیلم یا عکس به جه صورت هست . ممکنه راهنمایی بفرمایید ؟
سلام.
نیاز به دیتابیس دارید که لینک ها رو ذخیره کنید و بخش کار با php mysql رو یاد بگیرید
https://netparadis.com/phpmyadmin-create-mysql-database