دستور echo در تبدیل مستقیم ارایه به ابجکت وقتی اندیس عددی باشه (یکی از دوستان سوال پرسیدند ولی مشکل من توی جواب نبود)

پرسیده شده
فعالیت 1121 روز پیش
دیده شده 516 بار
0

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

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

فایل پیوست

mostafa mehrjoo
mostafa mehrjoo

13 فروردین 00

0
حذف شده

سلام و احترام

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

فایل پیوست

امیر صالحی

توسط

امیر صالحی

14 فروردین 00

حذف شده
من یه ارایه دارم که داخل ارایه یکی از اعضای ارایه رو با اندیس عددی یعنی از نوع INT معرفی کردم . Int => "Ali" حالا موقع تبدیل مستقیم ارایه به نوع object از دستور خودش استفاده کردم که در فایل بالا می بینید . در دستور اکو الان اون کلیدی که با int معرفی کردم کار نمی کنه در حالی که اگر کلید رو بصورت رشته در بیاورم مثلا رشته user1 اون وقت کار میکنه
mostafa mehrjoo

15 فروردین 00

حذف شده
در تبدیل غیر مستقیم استاد گفت برای چاپ کلید های از نوع int باید داخل { } بیاورید . ولی در اینجا کار نمی کنه . و خطا میده حالت عادی هم که زدم چاپ نکرد و خطا داد . در فایل پیوستی که بالا گذاشتم خطا ها رو نوشته .
mostafa mehrjoo

15 فروردین 00

حذف شده
سلام کد رو براتون گذاشتم . نمی دونم ورژن پی اچ پی چنده
mostafa mehrjoo

15 فروردین 00

0
حذف شده

سلام 

 

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

$x = array(array('name'=>'Ali'));

echo $x[0]['name'];
فایل پیوست

علی.

توسط

علی.

15 فروردین 00

حذف شده
شما دارید از ارایه استفاده میکنید . بله در ارایه به همین صورت که شما گفتید اما سوال من در مورد ابجکت هست نه ارایه
mostafa mehrjoo

15 فروردین 00

0
حذف شده

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

 

$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

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

فایل پیوست

علی.

توسط

علی.

15 فروردین 00

حذف شده
سلام وقتی تبدیل مستقیم میزنید دیگه از اون دستور اکو نمیتونی استفاده کنید
mostafa mehrjoo

15 فروردین 00

حذف شده
$obj رو برابر با (object) $x بزارید . نحوه اکو کردنش فرق میکنه
mostafa mehrjoo

15 فروردین 00

حذف شده
بله چون وقتی از تابع json_decode استفاده میکنی همه آرایه های موجود در داخل آرایمونم تبدیل به آبجکت میکنه ولی اگه obj = (object) $x$ بزاری فقط آرایمون تبدیل به ابجکت میشه و کاری با آرایه های داخلی نداره. اگه دو حالت رو var_dump کنی متوجه میشی.
علی.

15 فروردین 00

حذف شده
خب حالا بگید زرای اکو چه باید کرد یکی از دوستان جواب رو توی یه سوال دیگه گذاشته ولی چون از اندیس به شکل رشته استفاده کرده و عددی نیست اندیسش کار میکنه اما با عدد اکو نمیشه
mostafa mehrjoo

15 فروردین 00

حذف شده
البته استاد جوابش رو داده ولی از اندیس رشته ای استفاده کرده در فایل پیوستی که گذاشتم با رشته داره کار میکنه با اندیس عددی کار نمیکنه
mostafa mehrjoo

15 فروردین 00

0
حذف شده
$x = array('1'=>array('name'=>'Ali'),'2'=>array('name'=>'mobin'));

$y = (object) $x;

echo $y->{1}['name'];
فایل پیوست

علی.

توسط

علی.

15 فروردین 00

0
حذف شده
<?php
$a = array (
   "1" => array (
       "name" => array (
           "firstname" => "ali",
           "lastname" => "byat"
       ),
       "username" => "ali110",
       "email" => "[email protected]"
   ),

   "user2" => array (
       "name" => "erfan",
       "username" => "erfan888",
       "email" => "[email protected]"
   )
);
$c = (object) $a;

echo "<pre>";
print_r($c);
echo "</pre><hr>";
echo $c->{1}["name"]["lastname"];
فایل پیوست

mostafa mehrjoo

توسط

mostafa mehrjoo

15 فروردین 00

حذف شده
دستور اکوی اخر خطا میده چون از اندیس عددی استفاده کردم . اما اگر از رشته استفاده کنم خطا نمیده و خروجی دارم .
mostafa mehrjoo

15 فروردین 00

0
حذف شده

سلام و احترام

<?php

$a = array (
   "1" => array (
       "name" => array (
           "firstname" => "ali",
           "lastname" => "byat"
       ),
       "username" => "ali110",
       "email" => "[email protected]"
   ),

   "user2" => array (
       "name" => "erfan",
       "username" => "erfan888",
       "email" => "[email protected]"
   )
);
$c = (object) $a;

echo $c->{1}["name"]["lastname"];

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

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

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

15 فروردین 00