بخش دوم: آرایه‌های اندیس‌دار (عددی)

۲-۱. تعریف آرایه اندیس‌دار

در آرایه اندیس‌دار، کلید هر عنصر یک عدد است. شماره‌گذاری به‌طور پیش‌فرض از صفر شروع می‌شود.

<?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

۲-۱۱. نکات مهم

  1. کلید آرایه اندیس‌دار معمولاً عدد صحیح است.
  2. شماره‌گذاری پیش‌فرض از صفر شروع می‌شود.
  3. با $array[] = value عنصر به انتهای آرایه اضافه می‌شود.
  4. با unset عنصر حذف می‌شود، اما کلیدها دوباره مرتب نمی‌شوند.
  5. برای شمارش عناصر از count استفاده می‌کنیم.
  6. برای بررسی وجود کلید از isset یا array_key_exists استفاده می‌کنیم.
  7. برای پیمایش آرایه، foreach ساده‌ترین و مطمئن‌ترین روش است.