تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

تبدیل object به array در زبان PHP


۱۱ شهریور ۱۳۹۹

در برنامه‌نویسی با زبان PHP، اغلب با ساختارهای داده‌ای مختلفی سروکار داریم که هرکدام برای هدف خاصی طراحی شده‌اند. دو مورد از این ساختارها که به‌طور گسترده مورد استفاده قرار می‌گیرند، object‌ها و آرایه‌ها (arrays) هستند.

object‌، نمونه‌ای از یک class است که داده‌ها و رفتارهایی را در قالب یک واحد منطقی نگه می‌دارد. از سوی دیگر، آرایه‌ها ابزار ساده‌تری برای ذخیره‌سازی مجموعه‌ای از مقادیر هستند. به‌ویژه آرایه‌های انجمنی (associative arrays) که امکان نگهداری داده‌ها را به‌صورت کلید-مقدار (key-value) فراهم می‌کنند، در بسیاری از کاربردهای روزمره مانند پردازش فرم‌ها یا ارتباط با پایگاه داده بسیار کاربرد دارند.

گاهی در روند توسعه، لازم می‌شود داده‌های موجود در یک object را به آرایه تبدیل کنیم تا راحت‌تر قابل استفاده، ذخیره‌سازی یا انتقال باشند. PHP برای این کار، روش‌های مختلفی ارائه می‌دهد که هرکدام ویژگی‌ها و کاربردهای خاص خود را دارند.

در ادامه خواهید خواند:

  • چگونگی تبدیل object به array در زبان PHP
  • استفاده از توابع Json Decode و Json Encode
  • جمع بندی
تبدیل object به array در زبان php

چگونگی تبدیل object به array در زبان PHP

این فرایند در برنامه‌نویسی با عنوان type casting یا تغییر نوع داده (type conversion) شناخته می‌شود. در هر زبان برنامه‌نویسی، این عملیات قواعد و سینتکس خاص خود را دارد. در PHP نیز می‌توان با استفاده از type casting، یک object را مستقیماً به یک array تبدیل کرد.

برای انجام این کار، کافی است object مورد نظر را با استفاده از عملگر (array) به آرایه تبدیل کنید:

$Array_var = (array) $Obj;

کدهای زیر یک مثال کلی‌تر برای نشان دادن type casting در زبان PHP هستند:

<?php
class Hotel {
    public $item1;
    public $item2;
    public $item3;

    public function __construct($food1, $food2, $food3) {
        $this->item1 = $food1;
        $this->item2 = $food2;
        $this->item3 = $food3;
    }
}

$food = new Hotel("biriyani", "burger", "pizza");

echo "Before conversion:<br>";
var_dump($food);
echo "<br>";

$foodArray = (array) $food;

echo "After conversion:<br>";
var_dump($foodArray);
?>

در این روش، فقط ویژگی‌های public به شکل قابل فهم در آرایه نمایش داده می‌شوند. اگر ویژگی‌هایی از نوع protected یا private وجود داشته باشد، کلیدهای آن‌ها در آرایه شامل کاراکترهای خاصی مانند "\0*\0" خواهند بود که نشان‌دهنده سطح دسترسی آن‌هاست.

با هاست PHP لیارا، وب‌سایت خود را با سرعت بالا و امنیت قوی مدیریت کنید.
✅ نصب آسان ✅ پشتیبانی از نسخه‌های جدید PHP ✅ آپتایم بالا
خرید هاست PHP

استفاده از توابع Json Decode و Json Encode

در PHP، می‌توان با استفاده از تابع json_encode یک object را به رشته‌ی JSON تبدیل کرد و سپس با json_decode، آن را به یک آرایه انجمنی (associative array) تبدیل نمود. این روش برای objectهای ساده که فقط شامل ویژگی‌های public هستند، بسیار کاربردی است.

ساختار کلی این تبدیل به شکل زیر است:

$Array_var = json_decode(json_encode($obj), true);

مثال کامل‌تر:

<?php
class Hotel {
    public $var1;
    public $var2;

    public function __construct($bill, $food) {
        $this->var1 = $bill;
        $this->var2 = $food;
    }
}

$food = new Hotel(500, "biriyani");

echo "Before conversion:<br>";
var_dump($food);
echo "<br>";

$foodArray = json_decode(json_encode($food), true);

echo "After conversion:<br>";
var_dump($foodArray);
?>

  • این روش فقط ویژگی‌های public object را در نظر می‌گیرد. ویژگی‌های private و protected در فرآیند json_encode نادیده گرفته می‌شوند.
  • اگر object شامل داده‌هایی مانند resource یا closure باشد، این روش مناسب نیست و ممکن است منجر به خطا یا داده‌ی ناقص شود.
  • استفاده از گزینه‌ی true در json_decode باعث می‌شود خروجی به جای object، به صورت آرایه انجمنی برگردد.
معرفی هاست رایگان PHP
هاست PHP

جمع بندی

تبدیل object به array در PHP یکی از کارهای متداول برای ساده‌سازی فرایند پردازش، ذخیره‌سازی یا انتقال داده‌هاست. بسته به نیاز، می‌توان از روش‌های مختلفی استفاده کرد. Type casting روشی سریع و مستقیم است که تمام ویژگی‌ها را به آرایه تبدیل می‌کند، هرچند برای ویژگی‌های private و protected ممکن است ساختار کلیدها پیچیده شود.

استفاده از json_encode و json_decode خروجی تمیزتری ارائه می‌دهد و داده‌ها را به آرایه انجمنی تبدیل می‌کند، اما فقط ویژگی‌های public را پوشش می‌دهد. همچنین در شرایطی که فقط به ویژگی‌های public نیاز داریم، تابع get_object_vars ساده‌ترین گزینه است. انتخاب روش مناسب به ساختار object و هدف شما از تبدیل بستگی دارد.

منبع: https://www.edureka.co/blog/convert-object-to-array-in-php

به اشتراک بگذارید