🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ نارین خرم‌آبادی
دستور echo در تبدیل مستقیم ارایه به ابجکت وقتی اندیس عددی باشه (یکی از دوستان سوال پرسیدند ولی مشکل من توی جواب نبود)
جامعه پی اچ پی ایجاد شده در ۱۳ فروردین ۱۴۰۰

دستور echo در تبدیل مستقیم ارایه به ابجکت وقتی اندیس ما عددی هست دچار خطا میشه علتش رو نمیدونم .

 تبدیل مستقیم ارایه زدم به object زمانی که اندیس من رشته است کار میکنه دستور اکو ولی زمانی که اندیس عددی میدم خطا میده مثل همونی که در تبدیل غیر مستقیم گفتید .

سلام و احترام

لطفا خود کد رو قرار بدید و ورژن php شما چنده؟

افسانه نواب ۱۴ فروردین ۱۴۰۰، ۱۶:۱۴

سلام 

 

موقعی ای که از اندیس عددی هم استفاده میکنید قبلش باید نام متغیر رو بیارید تویه عکسی که ضمیمه کردی اسم متغیر رو قبل اندیس نیاوردی

$x = array(array('name'=>'Ali'));
echo $x[0]['name'];
طوس صدیقی ۱۵ فروردین ۱۴۰۰، ۰۷:۳۴

اول اینو بگم که برای دسترسی به متغیرهای تعریف شده در یک ابجکت به صورت زیر عمل میشه که این بخش مربوط میشه به مبحث شی گرایی

 

$object->variable_name;

 

  حالا درمورد سوال شما 

 

$x = array('1'=>array('name'=>'Ali'),'2'=>array('name'=>'mobin'));
// array to json string
$json_string = json_encode($x); 
// json string to object
$obj = json_decode($json_string);
echo $obj->{1}->name;

 

تویه خط آخر قسمت

 obj -> {۱}$

 خودش یک ابجکت برمیگدونه که برای دسترسی به متغیر

name

باید به صورتی که در خط آخر اوردم عمل شه

طوس صدیقی ۱۵ فروردین ۱۴۰۰، ۱۰:۱۲
$x = array('1'=>array('name'=>'Ali'),'2'=>array('name'=>'mobin'));
$y = (object) $x;
echo $y->{1}['name'];
طوس صدیقی ۱۵ فروردین ۱۴۰۰، ۱۳:۰۵
<?php
$a = array (
   "1" => array (
       "name" => array (
           "firstname" => "ali",
           "lastname" => "byat"
       ),
       "username" => "ali110",
       "email" => "ali@gmail.com"
   ),
   "user2" => array (
       "name" => "erfan",
       "username" => "erfan888",
       "email" => "erfan@yahoo.com"
   )
);
$c = (object) $a;
echo "<pre>";
print_r($c);
echo "</pre><hr>";
echo $c->{1}["name"]["lastname"];
نارین خرم‌آبادی ۱۵ فروردین ۱۴۰۰، ۱۵:۰۶

سلام و احترام

<?php
$a = array (
   "1" => array (
       "name" => array (
           "firstname" => "ali",
           "lastname" => "byat"
       ),
       "username" => "ali110",
       "email" => "ali@gmail.com"
   ),
   "user2" => array (
       "name" => "erfan",
       "username" => "erfan888",
       "email" => "erfan@yahoo.com"
   )
);
$c = (object) $a;
echo $c->{1}["name"]["lastname"];

کد شما به درستی کار میکنه

با دستور php -v میتونید ببینید که ورژن php شما چنده، حتما آخرین نسخه xampp رو دانلود و نصب کنید https://www.apachefriends.org/download_success.html

 

افسانه نواب ۱۵ فروردین ۱۴۰۰، ۱۶:۴۰