آرایههای چندبعدی در پی اچ پی و پیمایش آنها
در مقالات قبلی سایت پی اچ پی ساز در بخش متغیرها و توابع، با ساختار آرایههای ساده (ایندکسدار و انجمنی) آشنا شدیم. اما گاهی اوقات دادههای ما پیچیدهتر از آن هستند که بتوان آنها را در یک لیست یکبعدی ذخیره کرد. برای مثال، ذخیره اطلاعات یک جدول شامل سطرها و ستونها نیازمند ساختار پیشرفتهتری است. اینجاست که آرایههای چندبعدی (Multidimensional Arrays) در PHP به کمک برنامهنویسان میآیند.
در این مقاله، به بررسی آرایههای چندبعدی، نحوه تعریف آنها و روشهای پیمایش (Iterating) این نوع دادهها میپردازیم.
آرایه چندبعدی چیست؟
به زبان ساده، آرایه چندبعدی آرایهای است که در آن، هر عنصر خودش یک آرایه دیگر است. در PHP شما میتوانید آرایههای دوبعدی، سهبعدی و حتی با عمق بیشتر بسازید. با این حال، آرایههای دوبعدی (شبیه به یک جدول با سطر و ستون) بیشترین کاربرد را در برنامهنویسی وب دارند.
ساخت یک آرایه دوبعدی (اینکدسدار)
فرض کنید میخواهیم موجودی چند مدل خودرو را ذخیره کنیم. هر خودرو دارای نام، تعداد موجود در انبار و تعداد فروخته شده است.
$cars = [
["Volvo", 22, 18],
["BMW", 15, 13],
["Saab", 5, 2],
["Land Rover", 17, 15]
];
در مثال بالا، آرایه اصلی چهار عنصر دارد و هر کدام از این عناصر، خود یک آرایه شامل سه مقدار هستند.
دسترسی به عناصر آرایه چندبعدی
برای خواندن یا تغییر مقادیر در یک آرایه یکبعدی از یک جفت کروشه استفاده میکردیم (مثلاً $array[0]). اما در آرایه دوبعدی، برای رسیدن به مقدار نهایی به دو جفت کروشه نیاز داریم. کروشه اول شماره سطر (آرایه بیرونی) و کروشه دوم شماره ستون (آرایه درونی) را مشخص میکند.
// چاپ نام اولین خودرو (Volvo)
echo $cars[0][0];
// چاپ تعداد فروخته شده BMW (عدد 13)
echo $cars[1][2];
پیمایش آرایههای چندبعدی با حلقه for
برای چاپ تمام مقادیر یک آرایه دوبعدی ایندکسدار، بهترین روش استفاده از حلقههای تو در تو (Nested Loops) است. حلقه اول سطرها را میشمارد و حلقه دوم ستونهای داخل هر سطر را پیمایش میکند.
$cars = [
["Volvo", 22, 18],
["BMW", 15, 13],
["Saab", 5, 2]
];
for ($row = 0; $row < count($cars); $row++) {
echo "<b>شماره سطر: $row</b><br>";
echo "<ul>";
for ($col = 0; $col < count($cars[$row]); $col++) {
echo "<li>" . $cars[$row][$col] . "</li>";
}
echo "</ul>";
}
آرایههای چندبعدی انجمنی (Associative)
استفاده از ایندکسهای عددی همیشه خوانا نیست. برای دادههایی شبیه به خروجی پایگاه داده (Database)، معمولاً از ترکیب آرایههای چندبعدی و انجمنی استفاده میشود. در این حالت، آرایه درونی دارای کلیدهای نامگذاری شده است.
$students = [
"Ali" => [
"age" => 22,
"score" => 18,
"major" => "کامپیوتر"
],
"Sara" => [
"age" => 20,
"score" => 19,
"major" => "گرافیک"
]
];
در این ساختار، دسترسی به مقادیر بسیار منطقیتر و خواناتر است:
// چاپ نمره علی
echo $students["Ali"]["score"]; // خروجی: 18
پیمایش آرایههای چندبعدی انجمنی با foreach
حلقه for برای آرایههای انجمنی مناسب نیست، بنابراین از حلقههای تو در توی foreach استفاده میکنیم. حلقه اول کلیدهای اصلی (مثل نام دانشجویان) و حلقه دوم ویژگیهای هر کدام را استخراج میکند.
$students = [
"Ali" => ["age" => 22, "score" => 18],
"Sara" => ["age" => 20, "score" => 19]
];
foreach ($students as $name => $details) {
echo "<h3>اطلاعات $name:</h3>";
foreach ($details as $key => $value) {
echo "$key : $value <br>";
}
}
نتیجهگیری
آرایههای چندبعدی یکی از قدرتمندترین ابزارها در زبان PHP برای مدیریت دادههای ساختاریافته و پیچیده هستند. چه در حال ساخت یک سبد خرید باشید، چه در حال پردازش رکوردهای دیتابیس، درک صحیح از نحوه تعریف و پیمایش این آرایهها به وسیله حلقههای تو در تو (for و foreach) ضروری است. با تمرین این ساختارها، میتوانید منطق پروژههای خود را در سایت پی اچ پی ساز به سطح بسیار بالاتری ارتقا دهید.

بدون دیدگاه