سلام . روز شما بخیر
زمانی که یک آرایه از php را بصورت مستقیم به یک آبجکت stdClass تبدیل میکنم ، و میخواهم با دستور echo به یک اندیس خاص آدرس دهی کنم مفسر خطا میدهد . به این مضمون که دستور echo نمیتواند برای nonObject class استفاده شود . درصورتی که در خروجی std class چاپ میشود . ساختار به این شکل است که خطا میدهد :
$array_sampel = array(
"user1" =>
[
"name" => [
"firstName" => "ali",
"lastName" => "shabanzade"
],
"email" => "ali@gmail.com",
"age" => 24
],
"2" =>
[
"name" => "mohsen",
"email" => "mohsen@gmail.com",
"age" => 22
]
);
print_r($array_sampel);
echo "";
echo "
";
// php array to json object (javascript array)
$php_array_to_json = json_encode($array_sampel);
echo $php_array_to_json;// vaghti 1 php array be json tabdil mishavad mitavan an ra ba dastoore echo chap kard
echo "";
echo "
";
// json object to php array
// json to associative php array
$json_object_to_associative_array_in_php = json_decode($php_array_to_json ,1 );
print_r($json_object_to_associative_array_in_php);
echo "
";
echo ($array_sampel["user1"]["name"]["firstName"]);
echo "
";
echo "";
// json to non associative php array OR std class
$json_object_to_php_non_associtive_array_std_class = json_decode($php_array_to_json);
print_r ($json_object_to_php_non_associtive_array_std_class);
echo "
";
echo ($json_object_to_php_non_associtive_array_std_class -> user1 -> name -> firstName);
echo "
";
//if index in std class is a number , so that be in curly bracket {2}
echo ($json_object_to_php_non_associtive_array_std_class -> {2} -> email);
echo "
";
echo "
";
echo "";
// Conversion php array to php std object without change to json:
$php_array_to_php_object_without_json = (object)$array_sampel;
print_r($php_array_to_php_object_without_json);
echo "
";
var_dump($php_array_to_php_object_without_json -> user1 -> name -> firstName );
در صورتیکه در حالت json to std object class هست ، در دستور echo میتوان از ساختار بالا استفاده کرد و از یک اندیس خاص خروجی گرفت .در ضمن نسخه php 7.4 دارم.
با سپاس