روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ دانشجوی سون‌لرن
json_encode issue
جامعه پی اچ پی ایجاد شده در ۱۲ شهریور ۱۴۰۱

سلام خدا قوت

چرا وقتی یک ارایه بصورت [3,34,234,3] به json_encode پاس می‌دهیم مقداری که برمیگرداند از نوع string است!!!؟؟

سلام وقت بخیر

چون این تابع مقدار آرایه رو به رشته json تبدیل می‌کنه

موفق باشید ?

کیان سلگی ۱۲ شهریور ۱۴۰۱، ۲۱:۱۳

ببینید، اگه به خروجی array1 می‌گوییم رشته json پس به خروجی متغییر array چی چیزی می‌گوییم؟(چون درواقع هردو آرایه هستن، یکی از نوع index و دیگری associative)

بعد مثلا وقتی decode شون میکنیم یکی میشه شی stdClass و دیگری یک آرایه میشه؛ این درحالیه که اول کار ما فقط داده ای از نوع آرایه داشتیم.

$array = [1=>2,2=>34,3=>52534,4=>23452,5=>33];
$array1 = [2,34,52534,23452,33];
$jsone = json_encode($array);
$jsone1 = json_encode($array1);
$jsonD = json_decode($jsone);
$jsonD1 = json_decode($jsone1);
var_dump($jsone) ;
var_dump($jsone1) ;
var_dump($jsonD) ;
var_dump($jsonD1) ;

Output:

string(41) "{"1":2,"2":34,"3":52534,"4":23452,"5":33}"
string(21) "[2,34,52534,23452,33]"
object(stdClass)#1 (5) {
  ["1"]=>
  int(2)
  ["2"]=>
  int(34)
  ["3"]=>
  int(52534)
  ["4"]=>
  int(23452)
  ["5"]=>
  int(33)
}
array(5) {
  [0]=>
  int(2)
  [1]=>
  int(34)
  [2]=>
  int(52534)
  [3]=>
  int(23452)
  [4]=>
  int(33)
}


امیرحسین راستی ۱۳ شهریور ۱۴۰۱، ۰۷:۳۱

سلام وقت بخیر

ببینید دوست عزیز

شما زمانی که آرایه رو تبدیل به رشته json می‌کنید و بعد اگر اون رو decode کنید اون موقع آرایه شما تبدیل میشه به object std class

برای این که این اتفاق نیوفته تابع json_decode یک پارامتر دومی داره که اون رو برابر true یا 1 قرار بدید مقدار بازگشتی این تابع به صورت آرایه انجمنی یا همون associative array خواهد بود.

برای درک بیشتر شما یک مثال زدم که تمام این حالت‌ها رو شرح میده و میتونید بررسی بفرمایید.

$Array_Name = ["name" => "amir","family" => "mahmoodkhani"];
var_dump($Array_Name);
echo "
"
; $Array_Name_Encode = json_encode($Array_Name); var_dump($Array_Name_Encode); echo "
"
; $Array_Name_Dcode_obj = json_decode($Array_Name_Encode); $Array_Name_Dcode = json_decode($Array_Name_Encode,1); var_dump($Array_Name_Dcode_obj); echo "
"
; var_dump($Array_Name_Dcode);

بررسی بفرمایید اگر سوالی بود با کمال میل درخدمتیم.

موفق و پیروز باشید.

بهترین پاسخ
کیان سلگی ۱۳ شهریور ۱۴۰۱، ۱۶:۲۸