পিএইচপি এ স্টাডক্লাস কি?


উত্তর:


785

stdClassপিএইচপি-র জেনেরিক খালি শ্রেণি, Objectজাভা বা objectপাইথনের মতো ধরণের ( সম্পাদনা: তবে প্রকৃতপক্ষে সর্বজনীন বেস শ্রেণি হিসাবে ব্যবহৃত হয় না; এটি নির্দেশ করার জন্য ধন্যবাদ @ সিয়ারান ))

এটি বেনামে থাকা বস্তু, গতিশীল বৈশিষ্ট্য ইত্যাদির জন্য দরকারী useful

স্টাডক্লাস বিবেচনা করার একটি সহজ উপায় হ'ল এসোসিয়েটিভ অ্যারের বিকল্প হিসাবে। নীচের এই উদাহরণটি দেখুন যা দেখায় যে কীভাবে json_decode()একটি স্টাডক্লাস উদাহরণ বা কোনও এসোসিয়েটিভ অ্যারে পাবেন। এছাড়াও তবে এই উদাহরণে প্রদর্শিত হয়নি, SoapClient::__soapCallএকটি স্টাডক্লাস উদাহরণ দেয়।

<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42

আরও উদাহরণের জন্য পিএইচপি এবং স্টাডক্লাসে গতিশীল বৈশিষ্ট্যগুলি দেখুন ।


7
সম্ভবত তিনি mysql_fetch_object ব্যবহার করেছেন। এটি যদি stdlcass এর উদাহরণ তৈরি করে যদি আমি ভুল না করি।
গ্যালেন

69
এটি জাভার অবজেক্টের মতোভাবে কোনও বেস ক্লাস নয়, নীচে আমার উত্তরটি দেখুন।
সিআরান ম্যাকএন্ট্রি

1
আমি আশা করি আপনি জানেন যে
পদার্থটি

11
আমি মনে করি লোকেরা বলা উচিত যে stdClass জাভা স্ক্রিপ্ট এর {}নির্মাণ মত কিছু ।
আর্থ ইঞ্জিন

স্যার, আপনার উত্তরটি আংশিকভাবে ভুল কারণ নিবন্ধটি ভুল। একমাত্র (এবং এটিও ভুল) বিষয় যা এই শ্রেণীর প্রসারিত করা আপনাকে হিন্ট টাইপ করার অপশন দেয় যেমন function(StdClass $a, array $params)বনাম $aবস্তু এবং কিনা তা পরীক্ষা করা instanceof
দেজন মারজানোভিচ

1114

stdClassঅন্য ধরণের বস্তুতে কাস্ট করার সময় এটি কেবল একটি জেনেরিক 'খালি' শ্রেণি ব্যবহৃত হয়। অন্য দুটি উত্তর কি বলতে সত্ত্বেও, stdClassহয় না পিএইচপি বস্তুর জন্য বেস বর্গ। এটি মোটামুটি সহজেই প্রদর্শিত হতে পারে:

class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N';
// outputs 'N'

আমি বিশ্বাস করি না যে পিএইচপি-তে বেস অবজেক্টের ধারণা রয়েছে


4
স্ট্যান্ডিং কি জন্য দাঁড়িয়ে?
অ্যাডাম ওয়েট

47
এসটিডি = স্ট্যান্ডার্ড -
টমাস প্রডো

1
এটি একটি ইউটিলিটি ক্লাস! বিটিডব্লিউ এটিই আসল মন্তব্য!
গুস্তাভ

16
আসলে, কোড স্নিপেটের পরে প্রথম বাক্যটি প্রশ্নের উত্তর দেয়।
মৌগানরা

2
@ মিরো মার্কারাভেনেস: গতিশীল বৈশিষ্ট্যগুলি পিএইচপি-র যে কোনও ক্লাসে নির্ধারিত দ্বারা কেবল স্টাডক্লাসই নয়।
StanE

95

stdClass অন্য একটি দুর্দান্ত পিএইচপি বৈশিষ্ট্য। আপনি একটি বেনামে পিএইচপি ক্লাস তৈরি করতে পারেন। একটি উদাহরণ চেক করা যাক।

$page=new stdClass();
$page->name='Home';
$page->status=1;

এখন মনে করুন আপনার অন্য একটি ক্লাস রয়েছে যা একটি পৃষ্ঠা অবজেক্টের সাথে আরম্ভ করবে এবং এর উপর ভিত্তি চালাবে।

<?php
class PageShow {

    public $currentpage;

    public function __construct($pageobj)
    {
        $this->currentpage = $pageobj;
    }

    public function show()
    {
        echo $this->currentpage->name;
        $state = ($this->currentpage->status == 1) ? 'Active' : 'Inactive';
        echo 'This is ' . $state . ' page';
    }
}

এখন আপনাকে একটি পৃষ্ঠা অবজেক্ট সহ একটি নতুন পেজশো অবজেক্ট তৈরি করতে হবে।

এখানে নতুন ক্লাস টেম্পলেট লেখার দরকার নেই আপনি ফ্লাইতে একটি ক্লাস তৈরি করতে stdClass ব্যবহার করতে পারেন।

    $pageview=new PageShow($page);
    $pageview->show();


1
এটি অ্যারে ব্যবহার করার মতো হবে। আসলে এসটিডিক্লাসটি জাগলিংয়ের সময় অ্যারে থেকে অবজেক্ট রূপান্তর হিসাবে টাইপ করা হয়।
varuog

1
দয়া করে আপনার কোডে একটি টাইপো সংশোধন করুন: ($ এটি-> বর্তমান পৃষ্ঠা-> নাম == 1) হওয়া উচিত ($ এটি-> বর্তমান পৃষ্ঠা-> স্থিতি == 1)
এনরিকি

7
"আপনি একটি বেনামে পিএইচপি ক্লাস তৈরি করতে পারেন" - এটি কোনও বেনাম শ্রেণি নয় । আপনি উদাহরণস্বরূপ, get_class, ... ব্যবহার করতে পারেন
জন স্মিথ

2
এই উত্তরটি এখন বিশেষত বিভ্রান্তিকর যে পিএইচপিটির আসলে বেনাম শ্রেণি রয়েছে , যা এর থেকে খুব আলাদা stdClass
আইএমএসওপি

59

লক্ষণীয়, একটি stdClassবস্তুর json_decode()পাশাপাশি ব্যবহার থেকে তৈরি করা যেতে পারে ।


5
সত্য। আমি যখন প্রয়োজন হয় তখন ঘন ঘন json_encode এবং json_decode ব্যবহার করে অ্যারেতে অ্যারেতে অ্যারে রূপান্তর করতে।
গোলাপী ভ্যানসিয়া

6
$ x = json_decode (json_encode ($ অবজেক্ট), সত্য) বস্তুকে একটি অ্যারেতে ডিকোড করবে তবে এটি বাইনারি নিরাপদ নয়। মূলত এটি যদি প্লেইন টেক্সট না হয় তবে এটি JSON এ ভেঙে যেতে পারে।
simontemplar

@ সিমোনটেম্পলার পিএইচপি-তে আপনার লেখা উচিত নয় True। বুলিয়ানগুলি লোয়ার কেস trueবা হয় false
BadHorsie

2
@ সিমোনটেম্প্লার ম্যানুয়ালটি করে না, তবে পিএসআর -২ করে, সুতরাং আপনি যদি কোনও ধরণের মান অনুসরণ করেন তবে এটি নিম্নতর ক্ষেত্রে হওয়া উচিত। অবশ্যই, আপনি যদি এটি লিখতে চান তবে এটি বৈধ তবে আপনার মান অনুসরণ করা উচিত। বুলিয়ানগুলির জন্য ম্যানুয়াল ডকুমেন্টেশন অত্যন্ত পুরানো হবে, সম্ভবত স্ট্যান্ডার্ড গঠনের আগে এটি লেখা হয়েছিল। আসুন সত্য কথা বলতে, পিএইচপি মূলত কোনও মান ছাড়াই সম্পূর্ণ মেস হিসাবে লেখা হয়েছিল (ব্যবহৃত ভেরিয়েবল / ফাংশন / অবজেক্ট নামকরণ কনভেনশনের বিস্তৃত পরিসর দেখুন)। আমি সত্যিই এমন কোনও পিএইচপি কোড দেখতে পাইনি যেখানে বিকাশকারী আপনার ফর্ম্যাটটি ব্যবহার করেছেন।
BadHorsie

2
আমি পিএসআর -২ অনুসরণ করি সত্য / মিথ্যা / নাল বাদে এবং ক্লাসের জন্য তাদের নিজস্ব লাইনে খোলার ধনুর্বন্ধনী। তা ছাড়া, আমি শুধু যত্ন করি না। যদি কখনও অন্য কারও কোড সম্পাদনা করা হয়, তবে, তারা যে মানক ব্যবহার করছে তা আমি অনুসরণ করি (যদি থাকে তবে সাধারণত কোনওটিই না) এবং আমি যে ব্যর্থ হয় তা পিএসআর -2টিকে "সঠিক" উপায়ে করুন। সেখানে আরও অনেক godশ্বরের ভয়ঙ্কর কোড রয়েছে যা আরও অনেক সমস্যার সাথে রয়েছে যে তিনটি কীওয়ার্ডের মূলধনটি আমার উদ্বেগের মধ্যে সবচেয়ে কম।
সিমোনটেম্পলার

26

StdClass ব্যবহার করে আপনি এর নিজস্ব বৈশিষ্ট্য সহ একটি নতুন অবজেক্ট তৈরি করতে পারেন। নীচের উদাহরণটি বিবেচনা করুন যা কোনও ব্যবহারকারীর বিশদকে সহযোগী অ্যারে হিসাবে উপস্থাপন করে।

$array_user = array();
$array_user["name"] = "smith john";
$array_user["username"] = "smith";
$array_user["id"] = "1002";
$array_user["email"] = "smith@nomail.com";

যদি আপনাকে কোনও সামগ্রীর বৈশিষ্ট্যের মতো একই বিবরণ উপস্থাপন করতে হয় তবে আপনি stdClass নীচের মত ব্যবহার করতে পারেন ।

$obj_user = new stdClass;
$obj_user->name = "smith john";
$obj_user->username = "smith";
$obj_user->id = "1002";
$obj_user->email = "smith@nomail.com";

আপনি যদি একটি জুমলা বিকাশকারী হন তবে আরও বোঝার জন্য জুমলা ডক্সে এই উদাহরণটি দেখুন


24

একইভাবে,

$myNewObj->setNewVar = 'newVal'; 

একটি stdClass অবজেক্ট দেয় - অটো কাস্ট করা

আমি আজ এটি ভুল বানান দ্বারা খুঁজে পেয়েছি:

$GLOBASLS['myObj']->myPropertyObj->myProperty = 'myVal';

শান্ত!


9
কিন্তু এই একটি E_NOTICE বাড়াতে হবে
মধ্যে Petah

3
@ পিঠা কেবল পিএইচপি 5.3+ তে ঠিক আছে? তবে হ্যাঁ এটি অবশ্যই খারাপ অভ্যাস।
ক্রিস্টোকিভি

15

stdClass একটি বেনাম শ্রেণি বা বেনামে থাকা বস্তু নয়

উত্তরগুলির এখানে এমন বিকাশ অন্তর্ভুক্ত রয়েছে stdClassযা একটি বেনাম শ্রেণি বা এমনকি বেনামে থাকা বস্তু। এটি সত্য নয়।

stdClassকেবল একটি নিয়মিত পূর্বনির্ধারিত শ্রেণি। আপনি এটি instanceofঅপারেটর বা ফাংশন ব্যবহার করে পরীক্ষা করতে পারেন get_class। এখানে বিশেষ কিছু হয় না। পিএইচপি এই ক্লাসটি ব্যবহার করে যখন অন্য মানকে আপত্তি করতে দেয়।

stdClassপ্রোগ্রামারদের দ্বারা ব্যবহৃত বেশিরভাগ ক্ষেত্রে অ্যারে আরও ভাল বিকল্প, কারণ দরকারী কার্যকারিতা এবং এই ইউসকেসটি ডেটা স্ট্রাকচারকে একটি আসল অবজেক্ট নয় বলে উপস্থাপন করে।


8

এটি লক্ষণীয় যে কাস্টিং ব্যবহার করে আপনাকে আসলে @ বানডুলার দেওয়া উত্তরের মতো কোনও বস্তু তৈরি করার দরকার নেই। পরিবর্তে আপনি কেবল কোনও বস্তুতে আপনার অ্যারে কাস্ট করতে পারেন এবং stdClass ফিরে আসে। উদাহরণ স্বরূপ:

$array = array(
    'Property1'=>'hello',
    'Property2'=>'world',
    'Property3'=>'again',
);

$obj = (object) $array;
echo $obj->Property3;

Output: again


এটা ভাল। অনেক ক্লিনার!
ওয়েবস্প্যানার

7

প্রকৃতপক্ষে আমি খালি stdClass তৈরি করার চেষ্টা করেছি এবং গতিটি খালি শ্রেণির সাথে তুলনা করেছি।

class emp{}

তারপরে ১০০০ টি স্টাডি ক্লাস এবং এম্প তৈরি করার প্রক্রিয়া চালানো হয়েছিল ... খালি ক্লাসগুলি প্রায় ১১০০ মাইক্রোসেকেন্ডে করা হয়েছিল এবং এসটিডি ক্লাসগুলি ১00০০ টি মাইক্রোসেকেন্ড নিয়েছে। সুতরাং ডেটা সংরক্ষণের জন্য আপনার নিজের ডামি ক্লাস তৈরি করা ভাল বলে অনুমান করা হয় যদি আপনি এর জন্য খুব খারাপভাবে অবজেক্ট ব্যবহার করতে চান (অ্যারেগুলি লেখার জন্য এবং পড়া উভয়ের পক্ষে অনেক দ্রুত)।


22
স্পষ্টতই পার্থক্যটি নাম দৈর্ঘ্যের পার্থক্যের কারণে ঘটে। আপনি যদি ক্লাসটিকে "এভারিওলংক্লাসের নামকরণোপ্যারেন্টেরেসন" বলছেন তবে এটি তৈরি করতে অনেক বেশি সময় লাগবে। সুতরাং চিত্র যাও।
সেজে

27
হুমমম ... অকাল অপটিমাইজেশন। আমি বরং 600 টি মাইক্রোসেকেন্ডে সময় ব্যয় করার চেয়ে গতির সাথে সত্যিই উদ্বিগ্ন হয়ে থাকলে জটিল এসকিউএল কোয়েরি বা অন্যান্য নেটওয়ার্কের বাধা খুঁজে পাই। প্রকৃতপক্ষে, আমি প্রথমে জাভাস্ক্রিপ্টটি যদি অন্যটির চেয়ে 600 মাইক্রোসেকেন্ডে দ্রুত হয় তবে যত্নের চেয়ে মাথার পরিবর্তে মাথার ফুটারে আছে কিনা তা আগে যাচাই করতাম।
আরডি আরম

6
নির্ভরযোগ্য বেঞ্চমার্কের জন্য 1000 খুব ছোট। এক বিলিয়ন চেষ্টা করুন।
রাইটফোল্ড

1
পিএইচপি ওয়ার্ল্ডে অ্যারে ব্যবহার করা প্রায় সর্বদা ভাল better
ওয়াহিদ আমিরি

In অবশ্যই না। বড় প্রকল্পে কোনও দলে কাজ করার সময় অ্যারে হেল্ক একটি দুঃস্বপ্ন।
ডেভি ডেভ

6

stdClass অবজেক্ট ব্যবহার

StdClass আপনাকে বেনামে ক্লাস তৈরি করতে দেয় এবং অবজেক্ট কাস্টিংয়ের সাহায্যে আপনি ওওপি স্টাইলে কোনও এসোসিয়েটিভ অ্যারের কীগুলিও অ্যাক্সেস করতে পারেন। ঠিক যেমন আপনি নিয়মিত বস্তুর সম্পত্তি অ্যাক্সেস করবেন।

উদাহরণ

class Example {

  private $options;

  public function __construct(Array $setup)
  {
    // casting Array to stdClass object
    $this->options = (object) $setup;

    // access stdClass object in oop style - here transform data in OOP style using some custom method or something...
    echo $this->options->{'name'}; // ->{'key'}
    echo $this->options->surname;  // ->key
  }

}

$ob1 = new Example(["name" => "John", "surname" => "Doe"]);

প্রতিধ্বনিত হবে

জন দো


5

আপনি যদি কোনও বই সম্পর্কে কিছু তথ্য রাখতে দ্রুত কোনও নতুন অবজেক্ট তৈরি করতে চান। আপনি এই জাতীয় কিছু করবেন:

$book = new stdClass;
$book->title = "Harry Potter and the Prisoner of Azkaban";
$book->author = "J. K. Rowling";
$book->publisher = "Arthur A. Levine Books";
$book->amazon_link = "http://www.amazon.com/dp/0439136369/";

আরও তথ্যের জন্য দয়া করে সাইটটি দেখুন - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/


4

দয়া করে মনে রাখবেন যে 2 টি খালি স্টাডি ক্লাসগুলি কঠোরভাবে সমান নয়। বিদ্রূপের প্রত্যাশা লেখার সময় এটি অত্যন্ত গুরুত্বপূর্ণ।

php > $a = new stdClass();
php > $b = new stdClass();
php > var_dump($a === $b);
bool(false)
php > var_dump($a == $b);
bool(true)
php > var_dump($a);
object(stdClass)#1 (0) {
}
php > var_dump($b);
object(stdClass)#2 (0) {
}
php >

কারণ এটি একই উদাহরণ নয়, তবে এটি একে অপরের সাথে সমান হতে পারে না। ক্লাসগুলির কঠোর তুলনা উদাহরণ সনাক্তকরণের সাথে কাজ করে। যে কোনও শ্রেণীর প্রতিটি উদাহরণের স্বতন্ত্র আইডি রয়েছে।
বেডনিক

3

পিএইচপি.এন.এই ম্যানুয়ালটির কয়েকটি দৃC় ব্যাখ্যা এবং stdClass কী তা ব্যবহারকারীর দ্বারা প্রদত্ত উদাহরণ রয়েছে, আমি বিশেষত এটি পছন্দ করি http://php.net/manual/en/language.oop5.basic.php#92123 , https: // stackoverflow.com/a/1434375/2352773

stdClass ডিফল্ট পিএইচপি অবজেক্ট। stdClass এর কোনও বৈশিষ্ট্য, পদ্ধতি বা পিতামাতাই নেই। এটি যাদু পদ্ধতিগুলি সমর্থন করে না এবং কোনও ইন্টারফেস প্রয়োগ করে না।

আপনি যখন কোনও স্কেলার বা অ্যারেটিকে অবজেক্ট হিসাবে কাস্ট করেন, আপনি স্টাডক্লাসের একটি উদাহরণ পাবেন। যখনই আপনার জেনেরিক অবজেক্টের উদাহরণ প্রয়োজন তখন আপনি stdClass ব্যবহার করতে পারেন।

stdClass বেস ক্লাস নয়! পিএইচপি ক্লাসগুলি কোনও ক্লাস থেকে স্বয়ংক্রিয়ভাবে উত্তরাধিকারী হয় না। সমস্ত ক্লাসগুলি স্বতন্ত্র, যদি না তারা স্পষ্টভাবে অন্য শ্রেণির প্রসারিত করে। পিএইচপি এই বিষয়ে অনেক অবজেক্ট-ভিত্তিক ভাষা থেকে পৃথক।

আপনি একটি ক্লাস সংজ্ঞায়িত করতে পারেন যা stdClass প্রসারিত করতে পারে তবে আপনি কোনও সুবিধা পাবেন না, কারণ stdClass কিছুই করে না।


3

একটি উপায় যা যখন কোনও ক্লাসে কিছু ডেটা রাখতে হবে তখন স্ক্রিপ্টটির ব্যাখ্যা বন্ধ করা এড়াতে হবে, তবে দুর্ভাগ্যক্রমে এই শ্রেণিটি সংজ্ঞায়িত হয়নি

উদাহরণ:

 return $statement->fetchAll(PDO::FETCH_CLASS  , 'Tasks');

এখানে ডেটা পূর্বনির্ধারিত 'টাস্কগুলিতে' রাখা হবে। তবে, যদি আমরা কোডটি এইভাবে করি:

 return $statement->fetchAll(PDO::FETCH_CLASS );

এরপর ফলাফল রাখবে

কেবল বলেছেন যে: দেখুন, আমাদের এখানে একটি ভাল বাচ্চা আছে [বিষয়গুলি] তবে বাবা-মা ছাড়া। সুতরাং, আমরা তাদের একটি শিশু শিশু কেয়ার হোমে প্রেরণ করব :)


2

আপনি objectনিজের পছন্দের কোনও বস্তুতে অ্যারে কাস্ট করতেও ব্যবহার করতে পারেন :

Class Example
{
   public $name;
   public $age;
}

এখন টাইপের কোনও অবজেক্ট তৈরি করতে Exampleএবং এটিকে আরম্ভ করার জন্য আপনি এগুলির মধ্যে যে কোনও একটি করতে পারেন:

$example = new Example();
$example->name = "some name";
$example->age = 22;

অথবা

$example = new Example();
$example = (object) ['name' => "some name", 'age' => 22];

দ্বিতীয় বৈশিষ্ট্যটি বেশিরভাগ বৈশিষ্ট্যযুক্ত অবজেক্টের সূচনা করার জন্য বেশিরভাগ ক্ষেত্রে কার্যকর।


1

stClass একটি খালি শ্রেণি যা পিএইচপি নিজেই তৈরি করেছে, এবং কেবল পিএইচপি দ্বারা ব্যবহার করা উচিত, কারণ এটি কেবল একটি "খালি" শ্রেণি নয়, পিএইচপি যদি অ্যারেগুলি অবজেক্ট স্টাইলে রূপান্তর করতে stdClass ব্যবহার করে, যদি আপনাকে stdClass ব্যবহার করার প্রয়োজন হয়, আমি দুটি আরও ভাল বিকল্পের প্রস্তাব দিই : 1- অ্যারে ব্যবহার করুন (ক্লাসগুলির চেয়ে অনেক দ্রুত) 2- নিজের খালি ক্লাস তৈরি করুন এবং এটি ব্যবহার করুন

//example 1
$data=array('k1'=>'v1' , 'k2'=>'v2',....);

//example 2
//creating an empty class is faster than instances an stdClass
class data={}
$data=new data();
$data->k1='v1';
$data->k2='v2';

কী অ্যারে স্টাইলের পরিবর্তে অবজেক্ট স্টাইলটি ব্যবহার সম্পর্কে কাউকে ভাবতে বাধ্য করে ???


0

আমাদের স্টাডক্লাস করার কারণটি হ'ল পিএইচপি-তে কোনও সহযোগী অ্যারে থেকে কোনও সাধারণ অ্যারে আলাদা করার কোনও উপায় নেই (যেমন জাভাস্ক্রিপ্টে আপনার {}অবজেক্টের []জন্য এবং অ্যারেগুলি আলাদা করার জন্য)।

সুতরাং এটি খালি জিনিসগুলির জন্য একটি সমস্যা তৈরি করে। উদাহরণস্বরূপ এটি গ্রহণ করুন।

পিএইচপি:

$a = [1, 2, 3]; // this is an array
$b = ['one' => 1, 'two' => 2]; // this is an associate array (aka hash)
$c = ['a' => $a, 'b' => $b]; // this is also an associate array (aka hash)

ধরে নেওয়া যাক আপনি JSON পরিবর্তনশীল $ c এনকোড করতে চান

echo json_encode($c);
// outputs => {'a': [1,2,3], 'b': {one: 1, two: 2}}

এখন ধরা যাক আপনি $bএটিকে খালি তৈরি করা থেকে সমস্ত কী মুছে ফেলেছেন। যেহেতু $bএখন খালি (আপনি কীগুলি মনে রাখবেন সমস্ত মুছে ফেলেছেন?), দেখে মনে হচ্ছে এটির দিকে []তাকালে কোনটি অ্যারে বা অবজেক্ট হতে পারে।

সুতরাং আপনি যদি আবার একটি জসন_কেনড করেন তবে আউটপুটটি ভিন্ন হবে

echo json_encode($c);
// outputs => {'a': [1,2,3], 'b': []}

এটি একটি সমস্যা কারণ আমরা জানি bযে একটি সহযোগী অ্যারে হওয়ার কথা ছিল তবে পিএইচপি (বা json_encode এর মতো কোনও ফাংশন) তা করে না।

সুতরাং stdClass আসে উদ্ধার করার জন্য। আবার একই উদাহরণ গ্রহণ করা

$a = [1, 2, 3]; // this is an array
$b = (object) ['one' => 1, 'two' => 2]; // this makes it an stdClass
$c = ['a' => $a, 'b' => $b]; // this is also an associate array (aka hash)

সুতরাং এখন এমনকি যদি আপনি সমস্ত কীগুলি মুছুন $bএবং এটিকে খালি করে দিন, যেহেতু এটি একটি স্টাড ক্লাস তাই এটি কোনও লাভজনক নয় এবং আপনি যখন এটি জেনসোন_কোড করেন তখন আপনি এটি পাবেন:

echo json_encode($c);
// outputs => {'a': [1,2,3], 'b': {}}

এটিই কারণ json_encodeএবং json_decodeডিফল্টরূপে stdClass ফিরে আসার কারণ ।

 $c = json_decode('{"a": [1,2,3], "b": {}}', true); //true to deocde as array
 // $c is now ['a' => [1,2,3], 'b' => []] in PHP
 // if you json_encode($c) again your data is now corrupted
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.