بخش سوم: آرایههای انجمنی (کلید رشتهای)
۳-۱. تعریف آرایه انجمنی
در آرایه انجمنی، کلید هر عنصر یک نام یا رشته است، نه یک عدد ترتیبی. به همین دلیل به آن آرایه با کلید رشتهای یا آرایه انجمنی میگویند.
مثال:
<?php
$student = [
"name" => "علی",
"age" => 17,
"field" => "کامپیوتر"
];
?>
در این آرایه:
| کلید | مقدار |
|---|---|
| name | علی |
| age | 17 |
| field | کامپیوتر |
۳-۲. کاربرد آرایه انجمنی
آرایه انجمنی وقتی مناسب است که بخواهیم برای هر مقدار، یک نام معنادار داشته باشیم. برای مثال، اطلاعات یک دانشآموز شامل نام، سن و رشته است. استفاده از کلیدهای name، age و field خوانایی کد را بسیار بیشتر میکند.
۳-۳. ساخت آرایه انجمنی
روش اول: استفاده از کروشه
<?php
$book = [
"title" => "برنامهنویسی PHP",
"author" => "احمدی",
"price" => 250000
];
?>
روش دوم: استفاده از array
<?php
$book = array(
"title" => "برنامهنویسی PHP",
"author" => "احمدی",
"price" => 250000
);
?>
هر دو روش نتیجه یکسانی دارند. در این جزوه بیشتر از روش کروشه استفاده میشود.
ساخت آرایه انجمنی خالی
<?php
$book = [];
?>
یا:
<?php
$book = array();
?>
۳-۴. خواندن مقدار یک عنصر
برای خواندن مقدار، کلید رشتهای را داخل کروشه مینویسیم.
<?php
$student = [
"name" => "علی",
"age" => 17
];
echo $student["name"]; // علی
echo $student["age"]; // 17
?>
نکته: کلید رشتهای باید داخل علامت نقل قول نوشته شود. نوشتن کلید بدون نقل قول ممکن است در برخی نسخههای PHP هشدار ایجاد کند.
<?php
echo $student["name"]; // درست
// echo $student[name]; // نادرست یا همراه با هشدار
?>
۳-۵. تغییر مقدار یک عنصر
با مشخص کردن کلید، مقدار آن تغییر میکند.
<?php
$student = [
"name" => "علی",
"age" => 17
];
$student["age"] = 18;
print_r($student);
?>
خروجی:
Array
(
[name] => علی
[age] => 18
)
۳-۶. افزودن عنصر جدید
برای افزودن عنصر جدید، یک کلید جدید انتخاب میکنیم و مقدار را به آن نسبت میدهیم.
<?php
$student = [
"name" => "علی",
"age" => 17
];
$student["field"] = "کامپیوتر";
$student["grade"] = 19;
print_r($student);
?>
خروجی:
Array
(
[name] => علی
[age] => 17
[field] => کامپیوتر
[grade] => 19
)
۳-۷. حذف عنصر
برای حذف یک عنصر از آرایه انجمنی، از unset استفاده میکنیم.
<?php
$student = [
"name" => "علی",
"age" => 17,
"field" => "کامپیوتر"
];
unset($student["age"]);
print_r($student);
?>
خروجی:
Array
(
[name] => علی
[field] => کامپیوتر
)
۳-۸. تعداد عناصر آرایه
برای شمارش تعداد عناصر آرایه انجمنی نیز از count استفاده میکنیم.
<?php
$student = [
"name" => "علی",
"age" => 17
];
echo count($student); // 2
?>
۳-۹. بررسی وجود یک کلید
استفاده از isset
<?php
$student = [
"name" => "علی",
"age" => 17
];
if (isset($student["name"])) {
echo "کلید name وجود دارد.";
} else {
echo "کلید name وجود ندارد.";
}
?>
استفاده از array_key_exists
<?php
$student = [
"name" => "علی",
"age" => 17
];
if (array_key_exists("name", $student)) {
echo "کلید name وجود دارد.";
}
?>
مطالعه تکمیلی: اگر مقدار یک عنصر
nullباشد،issetمقدارfalseبرمیگرداند، اماarray_key_existsمقدارtrueبرمیگرداند؛ زیرا فقط وجود کلید را بررسی میکند.
۳-۱۰. پیمایش آرایه انجمنی
برای مرور همه عناصر آرایه انجمنی، از foreach استفاده میکنیم. در این حالت به کلید و مقدار هر دو دسترسی داریم.
<?php
$student = [
"name" => "علی",
"age" => 17,
"field" => "کامپیوتر"
];
foreach ($student as $key => $value) {
echo $key . " : " . $value . "<br>";
}
?>
خروجی:
name : علی
age : 17
field : کامپیوتر
اگر فقط مقدارها مورد نیاز باشند، میتوان از حالت سادهتر استفاده کرد.
<?php
foreach ($student as $value) {
echo $value . "<br>";
}
?>
۳-۱۱. مثال کامل
<?php
$product = [
"name" => "کیبورد",
"model" => "K-200",
"price" => 450000
];
echo "نام کالا: " . $product["name"] . "<br>";
echo "قیمت کالا: " . $product["price"] . "<br>";
$product["price"] = 500000;
$product["count"] = 10;
unset($product["model"]);
echo "اطلاعات نهایی کالا:<br>";
foreach ($product as $key => $value) {
echo $key . " : " . $value . "<br>";
}
?>
خروجی:
نام کالا: کیبورد
قیمت کالا: 450000
اطلاعات نهایی کالا:
name : کیبورد
price : 500000
count : 10
۳-۱۲. نکات مهم
- در آرایه انجمنی، کلیدها معمولاً رشته هستند.
- کلیدها باید داخل علامت نقل قول نوشته شوند.
- برای افزودن عنصر جدید، یک کلید جدید تعریف میکنیم.
- برای حذف عنصر از
unsetاستفاده میکنیم. - برای بررسی وجود کلید از
issetیاarray_key_existsاستفاده میکنیم. - برای پیمایش آرایه انجمنی،
foreachبا ساختار$key => $valueمناسبترین روش است. - اگر کلیدی تکراری تعریف شود، مقدار قبلی آن بازنویسی میشود.
مطالعه تکمیلی: در PHP همه آرایهها در واقع مجموعهای از جفتهای کلید و مقدار هستند. بنابراین مرز دقیقی بین آرایه اندیسدار و انجمنی وجود ندارد. آرایهای که کلیدهای آن رشته باشند، انجمنی نامیده میشود. همچنین میتوان از توابع
array_keysبرای گرفتن همه کلیدها وarray_valuesبرای گرفتن همه مقدارها استفاده کرد.<?php $student = ["name" => "علی", "age" => 17]; print_r(array_keys($student)); print_r(array_values($student)); ?>
۳-۱۳. جمعبندی بخش سوم
- در آرایه انجمنی، کلیدها رشته هستند و معنای مشخصی دارند.
- آرایه انجمنی برای نگهداری اطلاعات وابسته مانند اطلاعات یک دانشآموز یا یک کالا مناسب است.
- برای خواندن، تغییر و افزودن عنصر از کلید رشتهای استفاده میکنیم.
- برای حذف عنصر از
unsetاستفاده میکنیم. - برای پیمایش کامل آرایه انجمنی،
foreachبا کلید و مقدار بهترین گزینه است. - استفاده از کلیدهای معنادار، خوانایی و نگهداری کد را افزایش میدهد.