بخش دوم: آرایههای اندیسدار (عددی)
۲-۱. تعریف آرایه اندیسدار
در آرایه اندیسدار، کلید هر عنصر یک عدد است. شمارهگذاری بهطور پیشفرض از صفر شروع میشود.
<?php
$colors = ["قرمز", "سبز", "آبی"];
?>
در این آرایه:
| کلید | مقدار |
|---|---|
| 0 | قرمز |
| 1 | سبز |
| 2 | آبی |
۲-۲. ساخت آرایه اندیسدار
روش اول: استفاده از کروشه
<?php
$numbers = [10, 20, 30, 40];
?>
روش دوم: استفاده از array
<?php
$numbers = array(10, 20, 30, 40);
?>
هر دو روش یک آرایه با کلیدهای 0، 1، 2 و 3 میسازند.
ساخت آرایه خالی
<?php
$items = [];
?>
یا:
<?php
$items = array();
?>
۲-۳. خواندن مقدار یک عنصر
برای خواندن مقدار یک عنصر، کلید آن را داخل کروشه مینویسیم.
<?php
$colors = ["قرمز", "سبز", "آبی"];
echo $colors[0]; // قرمز
echo $colors[1]; // سبز
echo $colors[2]; // آبی
?>
اگر کلیدی وجود نداشته باشد، PHP هشدار میدهد و مقدار خالی برمیگرداند.
<?php
$colors = ["قرمز", "سبز", "آبی"];
echo $colors[5]; // هشدار: کلید 5 وجود ندارد
?>
۲-۴. تغییر مقدار یک عنصر
با مشخص کردن کلید، مقدار عنصر تغییر میکند.
<?php
$colors = ["قرمز", "سبز", "آبی"];
$colors[1] = "زرد";
print_r($colors);
?>
خروجی:
Array
(
[0] => قرمز
[1] => زرد
[2] => آبی
)
۲-۵. افزودن عنصر جدید
افزودن عنصر به انتهای آرایه
اگر داخل کروشه کلیدی ننویسیم، PHP عنصر را به انتهای آرایه اضافه میکند و کلید بعدی را خودش انتخاب میکند.
<?php
$colors = ["قرمز", "سبز", "آبی"];
$colors[] = "زرد";
$colors[] = "مشکی";
print_r($colors);
?>
خروجی:
Array
(
[0] => قرمز
[1] => سبز
[2] => آبی
[3] => زرد
[4] => مشکی
)
افزودن عنصر با کلید مشخص
<?php
$colors = ["قرمز", "سبز", "آبی"];
$colors[10] = "صورتی";
print_r($colors);
?>
در این حالت عنصر با کلید 10 اضافه میشود. کلیدهای 3 تا 9 خالی میمانند.
مطالعه تکمیلی: آرایهای که بعضی کلیدهای آن خالی باشد، آرایه تُنُک نامیده میشود. این حالت مجاز است، اما در بیشتر برنامهها از آن استفاده نمیشود. برای مرتبسازی مجدد کلیدها میتوان از تابع
array_valuesاستفاده کرد.
۲-۶. حذف عنصر
برای حذف یک عنصر از آرایه، از unset استفاده میکنیم.
<?php
$colors = ["قرمز", "سبز", "آبی"];
unset($colors[1]);
print_r($colors);
?>
خروجی:
Array
(
[0] => قرمز
[2] => آبی
)
نکته مهم: بعد از حذف، کلیدهای آرایه بهطور خودکار مرتب نمیشوند. در مثال بالا، کلید 1 حذف شده و کلیدهای 0 و 2 باقی ماندهاند.
حذف کل آرایه
<?php
$colors = ["قرمز", "سبز", "آبی"];
unset($colors);
?>
مطالعه تکمیلی: برای مرتب کردن مجدد کلیدها پس از حذف، میتوان از
array_valuesاستفاده کرد:<?php $colors = ["قرمز", "سبز", "آبی"]; unset($colors[1]); $colors = array_values($colors); print_r($colors); ?>خروجی کلیدها دوباره از صفر شروع میشود.
۲-۷. تعداد عناصر آرایه
برای شمارش تعداد عناصر آرایه از count استفاده میکنیم.
<?php
$colors = ["قرمز", "سبز", "آبی"];
echo count($colors); // 3
?>
۲-۸. بررسی وجود یک کلید
استفاده از isset
<?php
$colors = ["قرمز", "سبز", "آبی"];
if (isset($colors[1])) {
echo "کلید 1 وجود دارد.";
} else {
echo "کلید 1 وجود ندارد.";
}
?>
isset بررسی میکند که کلید وجود داشته باشد و مقدار آن null نباشد.
استفاده از array_key_exists
<?php
$colors = ["قرمز", "سبز", "آبی"];
if (array_key_exists(1, $colors)) {
echo "کلید 1 وجود دارد.";
}
?>
مطالعه تکمیلی: تفاوت
issetوarray_key_existsدر این است که اگر مقدار عنصرnullباشد،issetمقدارfalseبرمیگرداند، اماarray_key_existsمقدارtrueبرمیگرداند؛ زیرا فقط وجود کلید را بررسی میکند.
۲-۹. پیمایش ساده آرایه اندیسدار
برای مرور همه عناصر آرایه اندیسدار میتوان از حلقه for استفاده کرد.
<?php
$colors = ["قرمز", "سبز", "آبی"];
for ($i = 0; $i < count($colors); $i++) {
echo $colors[$i] . "<br>";
}
?>
خروجی:
قرمز
سبز
آبی
همچنین میتوان از foreach استفاده کرد.
<?php
$colors = ["قرمز", "سبز", "آبی"];
foreach ($colors as $color) {
echo $color . "<br>";
}
?>
مطالعه تکمیلی: اگر کلیدهای آرایه پیوسته و از صفر تا
count - 1نباشند، استفاده از حلقهforممکن است به عناصر خالی برخورد کند. در چنین شرایطیforeachمناسبتر است.
۲-۱۰. مثال کامل
<?php
$scores = [18, 15, 20, 12];
echo "تعداد نمرات: " . count($scores) . "<br>";
$scores[] = 17;
$scores[1] = 16;
unset($scores[3]);
echo "نمرات پس از تغییر:<br>";
foreach ($scores as $key => $value) {
echo "کلید " . $key . " : " . $value . "<br>";
}
?>
خروجی:
تعداد نمرات: 4
نمرات پس از تغییر:
کلید 0 : 18
کلید 1 : 16
کلید 2 : 20
کلید 4 : 17
۲-۱۱. نکات مهم
- کلید آرایه اندیسدار معمولاً عدد صحیح است.
- شمارهگذاری پیشفرض از صفر شروع میشود.
- با
$array[] = valueعنصر به انتهای آرایه اضافه میشود. - با
unsetعنصر حذف میشود، اما کلیدها دوباره مرتب نمیشوند. - برای شمارش عناصر از
countاستفاده میکنیم. - برای بررسی وجود کلید از
issetیاarray_key_existsاستفاده میکنیم. - برای پیمایش آرایه،
foreachسادهترین و مطمئنترین روش است.