در برنامهنویسی تقریباً همیشه با مجموعهای از اطلاعات سروکار داریم.
فرض کنید میخواهیم نام چند کاربر را در PHP ذخیره کنیم. اگر برای هر کاربر یک متغیر جداگانه ایجاد کنیم، کد برنامه خیلی سریع پیچیده میشود:
$user1 = "Ali";
$user2 = "Sara";
$user3 = "Reza";
$user4 = "Mina";
راه بهتر استفاده از Array یا آرایه در PHP است:
$users = ["Ali", "Sara", "Reza", "Mina"];
حالا تمام کاربران در یک ساختار واحد قرار گرفتهاند و میتوانیم بهسادگی روی آنها پیمایش، جستجو، مرتبسازی یا پردازش انجام دهیم.
آرایهها یکی از مهمترین ساختارهای داده در PHP هستند و در تقریباً تمام پروژههای واقعی PHP از جمله فروشگاههای اینترنتی، پنلهای مدیریت، APIها و پروژههای Laravel مورد استفاده قرار میگیرند.
در این آموزش از مفاهیم پایه Array شروع میکنیم و سپس انواع آرایه، دسترسی به عناصر، پیمایش، اضافه و حذف کردن دادهها، آرایههای چندبعدی، توابع کاربردی Array و مرتبسازی آرایهها را بررسی خواهیم کرد.
# آرایه در PHP چیست؟
Array ساختاری است که میتوان چندین مقدار را در یک Variable ذخیره کرد.
مثلاً:
$colors = ["red", "green", "blue"];
در اینجا به جای ایجاد سه Variable، تمام رنگها را داخل $colors قرار دادهایم.
هر مقدار داخل Array یک Element نامیده میشود.
ساختار ساده:
$colors
├── red
├── green
└── blue
# ساخت آرایه در PHP
یکی از رایجترین روشها برای ایجاد Array استفاده از [] است:
$users = ["Ali", "Sara", "Reza"];
همچنین میتوان از Syntax قدیمیتر array() استفاده کرد:
$users = array("Ali", "Sara", "Reza");
در کدهای جدید PHP معمولاً Syntax کوتاه [] خواناتر و رایجتر است.
# انواع آرایه در PHP
در PHP میتوان Arrayها را بر اساس نحوه استفاده از Keyها به شکلهای مختلفی استفاده کرد.
سه دسته رایج عبارتاند از:
- Indexed Array
- Associative Array
- Multidimensional Array
# آرایه Indexed در PHP
در Indexed Array، عناصر با Index عددی مدیریت میشوند.
مثلاً:
$users = ["Ali", "Sara", "Reza"];
Indexها از صفر شروع میشوند:
Ali → 0
Sara → 1
Reza → 2
بنابراین:
echo $users[0];
خروجی:
Ali
و:
echo $users[2];
خروجی:
Reza
# Index آرایه در PHP از صفر شروع میشود
یکی از نکات مهم برای افراد مبتدی این است که Index اولین عنصر Array برابر 0 است.
مثلاً:
$colors = ["red", "green", "blue"];
ساختار:
Index 0 → red
Index 1 → green
Index 2 → blue
بنابراین تعداد عناصر Array با آخرین Index آن یکی نیست.
# تغییر مقدار یک عنصر Array
میتوانیم مقدار یک Element را تغییر دهیم:
$colors = ["red", "green", "blue"];
$colors[1] = "yellow";
اکنون Array به شکل زیر است:
red
yellow
blue
# اضافه کردن عنصر به Array
یکی از سادهترین روشها استفاده از [] است:
$colors = ["red", "green"];
$colors[] = "blue";
اکنون:
["red", "green", "blue"]
داریم.
# اضافه کردن چند عنصر به Array
میتوان از array_push() نیز استفاده کرد:
$colors = ["red", "green"];
array_push($colors, "blue", "yellow");
اکنون Array شامل چهار عنصر است.
برای اضافه کردن یک یا چند عنصر به انتهای آرایه، استفاده مستقیم از [] نیز در بسیاری از موارد سادهتر است.
# حذف عنصر از Array
برای حذف یک عنصر میتوان از unset() استفاده کرد:
$colors = ["red", "green", "blue"];
unset($colors[1]);
در این حالت عنصر green حذف میشود.
نکته مهم این است که unset() لزوماً Indexهای باقیمانده را از نو مرتب نمیکند.
مثلاً ممکن است Array به شکل زیر باقی بماند:
0 → red
2 → blue
اگر نیاز به بازسازی Indexها داشتیم، میتوانیم از array_values() استفاده کنیم.
# بازسازی Indexهای Array
$colors = ["red", "green", "blue"];
unset($colors[1]);
$colors = array_values($colors);
اکنون Indexها دوباره از صفر شروع میشوند:
0 → red
1 → blue
# Associative Array در PHP چیست؟
در Associative Array به جای اینکه فقط از Index عددی استفاده کنیم، برای هر مقدار یک Key مشخص تعریف میکنیم.
مثلاً:
$user = [
"name" => "Ali",
"age" => 25,
"email" => "ali@example.com"
];
در اینجا:
name → Ali
age → 25
email → ali@example.com
داریم.
# دسترسی به Associative Array
برای دسترسی به مقدار موردنظر، Key را داخل [] قرار میدهیم:
echo $user["name"];
خروجی:
Ali
یا:
echo $user["email"];
خروجی:
ali@example.com
# تغییر مقدار در Associative Array
مثلاً:
$user["age"] = 26;
اکنون مقدار Age برابر 26 است.
# اضافه کردن Key جدید
میتوانیم یک Key جدید نیز ایجاد کنیم:
$user["city"] = "Tehran";
اکنون:
[
"name" => "Ali",
"age" => 26,
"email" => "ali@example.com",
"city" => "Tehran"
]
# حذف Key از Associative Array
unset($user["age"]);
با این دستور Key مربوط به age حذف میشود.
# پیمایش Array با foreach
یکی از مهمترین کاربردهای Array، پیمایش عناصر آن است.
برای این کار معمولاً از foreach استفاده میکنیم:
$colors = ["red", "green", "blue"];
foreach ($colors as $color) {
echo $color;
}
در هر بار اجرای حلقه، عنصر بعدی داخل $color قرار میگیرد.
# پیمایش Associative Array
برای دریافت Key و Value:
$user = [
"name" => "Ali",
"age" => 25,
"city" => "Tehran"
];
foreach ($user as $key => $value) {
echo $key . ": " . $value;
}
خروجی:
name: Ali
age: 25
city: Tehran
این روش در پروژههای PHP بسیار پرکاربرد است.
# بررسی وجود یک Key با array_key_exists
اگر بخواهیم بررسی کنیم یک Key در Array وجود دارد یا خیر:
$user = [
"name" => "Ali",
"email" => "ali@example.com"
];
if (array_key_exists("email", $user)) {
echo "Email وجود دارد.";
}
# تفاوت array_key_exists و isset
این دو Function شبیه یکدیگر هستند اما تفاوت مهمی دارند.
isset() اگر Key وجود داشته باشد و مقدار آن null نباشد، true برمیگرداند.
مثلاً:
$user = [
"name" => null
];
در این حالت:
isset($user["name"])
برابر false خواهد بود.
اما:
array_key_exists("name", $user)
برابر true است، چون Key وجود دارد.
این تفاوت هنگام کار با دادههای واقعی اهمیت زیادی دارد.
# بررسی وجود مقدار با in_array
اگر بخواهیم ببینیم یک مقدار داخل Array وجود دارد یا خیر، میتوانیم از in_array() استفاده کنیم.
$colors = ["red", "green", "blue"];
if (in_array("green", $colors)) {
echo "رنگ وجود دارد.";
}
# جستجوی Key بر اساس Value
برای پیدا کردن Key مربوط به یک Value میتوان از array_search() استفاده کرد:
$colors = [
"first" => "red",
"second" => "green",
"third" => "blue"
];
$key = array_search("green", $colors);
echo $key;
خروجی:
second
هنگام استفاده از array_search() بهتر است نتیجه را با دقت بررسی کنیم، چون ممکن است مقدار 0 نیز به عنوان Index معتبر برگردانده شود.
# شمارش عناصر Array با count
برای بهدست آوردن تعداد عناصر:
$users = ["Ali", "Sara", "Reza"];
echo count($users);
خروجی:
3
count() یکی از Functionهای بسیار پرکاربرد PHP هنگام کار با Arrayهاست.
# Array چندبعدی در PHP چیست؟
گاهی یک Array خودش شامل Arrayهای دیگری است.
به این ساختار Multidimensional Array گفته میشود.
مثلاً:
$users = [
[
"name" => "Ali",
"age" => 25
],
[
"name" => "Sara",
"age" => 30
]
];
در اینجا $users شامل چند Array دیگر است.
# دسترسی به Array چندبعدی
برای دسترسی به نام کاربر اول:
echo $users[0]["name"];
خروجی:
Ali
برای کاربر دوم:
echo $users[1]["name"];
خروجی:
Sara
# پیمایش Array چندبعدی
میتوان با foreach روی Array چندبعدی حرکت کرد:
foreach ($users as $user) {
echo $user["name"];
}
خروجی:
Ali
Sara
# آرایه چندبعدی با ساختار پیچیدهتر
در پروژههای واقعی ممکن است ساختار داده بسیار پیچیدهتر باشد:
$products = [
[
"name" => "Laptop",
"price" => 50000000,
"categories" => [
"computer",
"electronics"
]
],
[
"name" => "Mouse",
"price" => 1000000,
"categories" => [
"accessory",
"computer"
]
]
];
برای دسترسی به دستهبندی محصول اول:
echo $products[0]["categories"][0];
# array_map در PHP
array_map() برای اعمال یک Function روی عناصر Array استفاده میشود.
مثلاً:
$numbers = [1, 2, 3, 4];
$result = array_map(
fn($number) => $number * 2,
$numbers
);
نتیجه:
[2, 4, 6, 8]
این Function در پردازش دادهها بسیار کاربردی است.
# array_filter در PHP
برای فیلتر کردن عناصر Array میتوان از array_filter() استفاده کرد.
مثلاً:
$numbers = [1, 2, 3, 4, 5, 6];
$evenNumbers = array_filter(
$numbers,
fn($number) => $number % 2 === 0
);
نتیجه شامل اعداد زوج خواهد بود.
نکته مهم اینکه array_filter() ممکن است Indexهای اصلی را حفظ کند. اگر به Indexهای متوالی نیاز دارید، میتوانید بعد از فیلتر کردن از array_values() استفاده کنید.
# array_reduce در PHP
array_reduce() برای تبدیل مجموعهای از مقادیر به یک مقدار نهایی استفاده میشود.
مثلاً محاسبه مجموع:
$numbers = [10, 20, 30];
$total = array_reduce(
$numbers,
fn($carry, $number) => $carry + $number,
0
);
echo $total;
خروجی:
60
# جمع عناصر Array با array_sum
برای جمع کردن مقادیر عددی میتوان مستقیماً از array_sum() استفاده کرد:
$prices = [100, 200, 300];
echo array_sum($prices);
خروجی:
600
# مرتبسازی Array در PHP
PHP Functionهای مختلفی برای Sort کردن Array دارد.
یکی از سادهترین آنها:
sort()
مثلاً:
$numbers = [5, 2, 8, 1, 3];
sort($numbers);
نتیجه:
[1, 2, 3, 5, 8]
# مرتبسازی نزولی با rsort
برای مرتبسازی از بزرگ به کوچک:
$numbers = [5, 2, 8, 1, 3];
rsort($numbers);
نتیجه:
[8, 5, 3, 2, 1]
# مرتبسازی Associative Array بر اساس Value
برای مرتبسازی Valueها و حفظ Keyها میتوان از asort() استفاده کرد:
$scores = [
"Ali" => 80,
"Sara" => 95,
"Reza" => 70
];
asort($scores);
# مرتبسازی بر اساس Key
برای مرتبسازی Associative Array بر اساس Key میتوان از ksort() استفاده کرد:
$users = [
"Reza" => 30,
"Ali" => 25,
"Sara" => 28
];
ksort($users);
# مرتبسازی نزولی بر اساس Key
برای این کار:
krsort($users);
استفاده میشود.
# تفاوت sort و asort و ksort
به صورت خلاصه:
| Function | معیار مرتبسازی | حفظ Key |
|---|---|---|
sort() | Value | خیر، Indexها بازسازی میشوند |
rsort() | Value نزولی | خیر |
asort() | Value | بله |
arsort() | Value نزولی | بله |
ksort() | Key | بله |
krsort() | Key نزولی | بله |
# اتصال Arrayها در PHP
برای ترکیب Arrayها میتوان از array_merge() استفاده کرد.
$first = ["Ali", "Sara"];
$second = ["Reza", "Mina"];
$users = array_merge($first, $second);
نتیجه:
["Ali", "Sara", "Reza", "Mina"]
# ترکیب Associative Arrayها
مثلاً:
$first = [
"name" => "Ali"
];
$second = [
"age" => 25
];
$user = array_merge($first, $second);
نتیجه:
[
"name" => "Ali",
"age" => 25
]
در Arrayهای Associative باید به رفتار array_merge() در صورت وجود Keyهای یکسان توجه کرد؛ مخصوصاً اگر کلیدها عددی باشند یا چند Array دارای Keyهای مشترک باشند.
# استخراج بخش خاصی از Array
برای گرفتن بخشی از Array میتوان از array_slice() استفاده کرد.
$numbers = [1, 2, 3, 4, 5];
$result = array_slice($numbers, 1, 3);
نتیجه:
[2, 3, 4]
# حذف و جایگزینی بخشی از Array با array_splice
array_splice() علاوه بر حذف، امکان جایگزین کردن عناصر را نیز فراهم میکند.
مثلاً:
$numbers = [1, 2, 3, 4];
array_splice($numbers, 1, 2, [10, 20]);
Array تغییر خواهد کرد.
# تبدیل Array به String با implode
برای تبدیل عناصر Array به یک String میتوان از implode() استفاده کرد.
$tags = ["PHP", "Laravel", "MySQL"];
$result = implode(", ", $tags);
echo $result;
خروجی:
PHP, Laravel, MySQL
این Function برای ساخت رشتههایی مانند لیست Tagها بسیار کاربردی است.
# تبدیل String به Array با explode
برعکس implode()، Function explode() یک String را بر اساس یک Separator به Array تبدیل میکند.
$tags = "PHP,Laravel,MySQL";
$result = explode(",", $tags);
نتیجه:
[
"PHP",
"Laravel",
"MySQL"
]
# تبدیل Array به JSON
در توسعه APIها و ارتباط بین Frontend و Backend، تبدیل Array به JSON بسیار مهم است.
برای این کار از json_encode() استفاده میکنیم:
$user = [
"name" => "Ali",
"age" => 25
];
$json = json_encode($user);
خروجی چیزی شبیه این خواهد بود:
{"name":"Ali","age":25}
این موضوع در توسعه REST API با PHP اهمیت زیادی دارد.
# تبدیل JSON به Array
برای تبدیل JSON به Array:
$json = '{"name":"Ali","age":25}';
$user = json_decode($json, true);
پارامتر true باعث میشود داده JSON به صورت Associative Array برگردد.
سپس:
echo $user["name"];
خروجی:
Ali
# Array و دادههای Database
در پروژههای واقعی PHP معمولاً دادههایی که از Database دریافت میشوند در قالب Array یا مجموعهای از دادههای قابل پیمایش پردازش میشوند.
مثلاً فرض کنید اطلاعات کاربران را داریم:
$users = [
[
"id" => 1,
"name" => "Ali"
],
[
"id" => 2,
"name" => "Sara"
]
];
میتوانیم آنها را با foreach نمایش دهیم:
foreach ($users as $user) {
echo $user["name"];
}
این الگو را بعدها هنگام کار با MySQL و Laravel بسیار زیاد خواهید دید.
# Array در Laravel
در Laravel نیز Arrayها بسیار پرکاربرد هستند.
برای مثال ممکن است دادههای یک User را به شکل زیر داشته باشیم:
$user = [
"name" => "Ali",
"email" => "ali@example.com"
];
همچنین هنگام کار با:
- Request
- Configuration
- Validation
- API
- JSON
- Collection
- Database
مرتب با ساختارهای آرایهای یا دادههای مشابه روبهرو خواهید شد.
البته Laravel علاوه بر Array از ساختار قدرتمند Collection نیز استفاده میکند که امکانات بیشتری برای پردازش مجموعه دادهها ارائه میدهد.
# تفاوت Array و Collection در Laravel
Array یک ساختار داده پایه در PHP است.
Collection در Laravel یک Abstraction قدرتمندتر برای کار با مجموعه دادههاست.
برای مثال:
$users = collect([
"Ali",
"Sara",
"Reza"
]);
سپس میتوان از متدهایی مانند:
$users->map(...)
یا:
$users->filter(...)
استفاده کرد.
برای درک صحیح Collection، ابتدا باید Array و Functionهای آن را به خوبی یاد گرفته باشید.
# اشتباهات رایج هنگام کار با Array در PHP
1. دسترسی به Index اشتباه
مثلاً:
$users = ["Ali", "Sara"];
echo $users[5];
این Index وجود ندارد.
قبل از دسترسی به داده باید ساختار Array را بشناسید یا در صورت نیاز وجود Index را بررسی کنید.
2. فرض کردن اینکه Array همیشه Index متوالی دارد
بعد از unset() ممکن است Indexها شکسته باشند:
$numbers = [10, 20, 30];
unset($numbers[1]);
ممکن است Indexها به صورت:
0
2
باقی بمانند.
در صورت نیاز:
$numbers = array_values($numbers);
3. اشتباه گرفتن Key و Value
در Associative Array:
$user = [
"name" => "Ali"
];
name یک Key و Ali یک Value است.
4. استفاده نامناسب از in_array
هنگام بررسی مقادیر، در بعضی سناریوها بهتر است نوع داده نیز دقیقاً بررسی شود:
in_array($value, $array, true);
پارامتر سوم باعث مقایسه Strict میشود.
5. پردازش حجم بسیار زیاد داده در حافظه
Arrayها تمام دادههای خود را در حافظه PHP نگه میدارند. اگر حجم داده بسیار زیاد باشد، ساخت یک Array بسیار بزرگ میتواند مصرف حافظه را افزایش دهد.
در پروژههای بزرگ باید از روشهایی مانند:
- Pagination
- Chunking
- Streaming
- Generator
متناسب با سناریو استفاده کرد.
# نکات مهم برای کار حرفهای با Array
برای استفاده بهتر از Arrayها:
- قبل از دسترسی، ساختار داده را بشناسید.
- برای پیمایش معمولاً
foreachانتخاب خوانایی است. - از Functionهای داخلی PHP به جای پیادهسازی دوباره Logicهای ساده استفاده کنید.
- در مقایسه مقادیر حساس، به تفاوت Loose و Strict Comparison توجه کنید.
- هنگام کار با دادههای بزرگ به مصرف حافظه توجه داشته باشید.
- Arrayهای چندبعدی بسیار پیچیده را در صورت نیاز به ساختارهای مناسبتر تبدیل کنید.
- هنگام دریافت داده از کاربر یا API، Validation را فراموش نکنید.
# مهمترین توابع Array در PHP
در ادامه تعدادی از پرکاربردترین Functionهای مرتبط با Array را میبینید:
| Function | کاربرد |
|---|---|
count() | تعداد عناصر |
in_array() | بررسی وجود Value |
array_key_exists() | بررسی وجود Key |
array_search() | پیدا کردن Key بر اساس Value |
array_push() | اضافه کردن عنصر |
array_pop() | حذف آخرین عنصر |
array_shift() | حذف اولین عنصر |
array_unshift() | اضافه کردن به ابتدای Array |
array_map() | پردازش عناصر |
array_filter() | فیلتر عناصر |
array_reduce() | تبدیل مجموعه داده به یک مقدار |
array_merge() | ترکیب Arrayها |
array_slice() | استخراج بخشی از Array |
array_splice() | حذف یا جایگزینی بخشی از Array |
array_values() | بازسازی Valueها و Indexهای عددی |
sort() | مرتبسازی صعودی بر اساس Value |
rsort() | مرتبسازی نزولی بر اساس Value |
asort() | مرتبسازی Value با حفظ Key |
ksort() | مرتبسازی بر اساس Key |
implode() | تبدیل Array به String |
explode() | تبدیل String به Array |
array_sum() | محاسبه مجموع مقادیر |
# جمعبندی
آرایه یا Array در PHP یکی از مهمترین ساختارهای داده این زبان است و تقریباً در تمام پروژههای واقعی PHP با آن سروکار خواهید داشت.
در این مقاله یاد گرفتیم که:
- Array چیست.
- چگونه Array بسازیم.
- Indexed Array چیست.
- Associative Array چیست.
- Multidimensional Array چیست.
- چگونه عناصر Array را اضافه، حذف و ویرایش کنیم.
- چگونه Array را با
foreachپیمایش کنیم. - چگونه وجود Key یا Value را بررسی کنیم.
- چگونه Arrayها را مرتب کنیم.
- چگونه چند Array را ترکیب کنیم.
- چگونه Array را به String تبدیل کنیم.
- چگونه String را به Array تبدیل کنیم.
- چگونه Array را به JSON تبدیل کنیم.
- چگونه JSON را به Array تبدیل کنیم.
array_map()،array_filter()وarray_reduce()چه کاربردی دارند.- Arrayها چه ارتباطی با Laravel دارند.
اگر در حال یادگیری PHP هستید، بعد از تسلط بر Arrayها پیشنهاد میشود سراغ رشتهها در PHP بروید؛ زیرا String و Array دو ساختار بسیار پرکاربرد در پردازش دادههای PHP هستند.
# سوالات متداول درباره آرایه در PHP
آرایه در PHP چیست؟
Array ساختاری در PHP است که به برنامهنویس اجازه میدهد چندین مقدار را در یک Variable ذخیره و مدیریت کند.
انواع آرایه در PHP چیست؟
از رایجترین ساختارهای Array در PHP میتوان به Indexed Array، Associative Array و Multidimensional Array اشاره کرد.
Index آرایه در PHP از چند شروع میشود؟
در یک Indexed Array معمولی، اولین Index برابر 0 است.
چگونه یک عنصر به Array در PHP اضافه کنیم؟
میتوان از Syntax زیر استفاده کرد:
$users[] = "Ali";
همچنین در شرایط مناسب میتوان از array_push() استفاده کرد.
چگونه یک عنصر را از Array حذف کنیم؟
میتوان از unset() استفاده کرد:
unset($users[1]);
بهترین روش پیمایش Array در PHP چیست؟
برای بسیاری از موارد، foreach خواناترین و سادهترین روش پیمایش Array است.
تفاوت Indexed Array و Associative Array چیست؟
در Indexed Array معمولاً عناصر با Index عددی مدیریت میشوند، اما در Associative Array برای عناصر Keyهای مشخصی مانند name یا email تعریف میکنیم.
چگونه تعداد عناصر Array را پیدا کنیم؟
با Function count():
count($users);
چگونه یک مقدار را در Array پیدا کنیم؟
میتوان از in_array() استفاده کرد:
in_array("Ali", $users);
چگونه Array را به JSON تبدیل کنیم؟
از json_encode() استفاده میشود:
$json = json_encode($data);
چگونه JSON را به Array تبدیل کنیم؟
میتوان از json_decode() با پارامتر true استفاده کرد:
$data = json_decode($json, true);
# مقالات مرتبط
برای ادامه مسیر یادگیری PHP، مقالات زیر را نیز مطالعه کنید:
- PHP چیست و چه کاربردی دارد؟
- آموزش PHP از صفر
- ساختار Syntax در PHP
- متغیرها در PHP
- انواع داده در PHP
- شرطها در PHP
- حلقهها در PHP
- توابع در PHP
- رشتهها در PHP
- کار با تاریخ و زمان در PHP
- کار با JSON در PHP
- کار با فایل در PHP
- Exception در PHP
- Namespace در PHP
- Composer چیست؟
- OOP در PHP
# مسیر پیشنهادی یادگیری PHP
PHP چیست؟
↓
آموزش PHP از صفر
↓
Syntax در PHP
↓
متغیرها در PHP
↓
انواع داده در PHP
↓
شرطها در PHP
↓
حلقهها در PHP
↓
توابع در PHP
↓
آرایهها در PHP ← این مقاله
↓
رشتهها در PHP
↓
تاریخ و زمان در PHP
↓
JSON در PHP
↓
کار با فایل
↓
Exception
↓
Namespace
↓
Composer
↓
OOP





