() translation by (you can also view the original English article)
در این پست، شما مفاهیم پایهایی آرایهها در پیاچپی را فرا خواهید گرفت. یاد خواهید گرفت که چگونه آرایه بسازید،و چگونه از آرایههای انجمنی (associative) و چند بُعدی استفاده کنید و تعداد زیادی از مثالهای عملی کار با آرایهها را خواهید دید.
آرایه چیست؟
در پیاچپی، یک آرایه یک ساختمان داده است که به شما این امکان را میدهد چندین المنت را در یک متغییر ذخیره کنید.این المنتها به صورت جفت key-value یا کلید-مقدار ذخیره میشوند. در حقیقت، هر زمان شما احساس کنید که نیاز دارید لیستی از المنتها را ذخیره کنید، اینجاست که میتوانید از آرایهها استفاده کنید. بیشتر اوقات، نوع آیتمهای موجود در یک آرایه یکسان میباشد.
به عنوان مثال، در نظر بگیرید که میخواهید لیستی از اسم میوهها ذخیره کنید. بدون آرایه، شما میبایست متغییرهای متعددی برای هر کدام از اسامی میوهها میساختید. از طرفی دیگر، اگر شما از آرایه برای ذخیره اسم میوهها استفاده کنید، چیزی شبیه این خواهیم داشت:
1 |
<?php
|
2 |
$array_fruits = array('Apple', 'Orange', 'Watermelon', 'Mango'); |
3 |
?>
|
همانطور که میبینید ما از متغییر $array_fruits
جهت ذخیره نامهای مختلف میوه استفاده کردهایم. یک ویژگی خوب این روش این هست که میتوانید در صورت نیاز بعداً به آرایه $array_fruits
المنتهای بیشتری اضافه کنید.
روشهای مختلفی برای تغییر مقادیر در یک آرایه وجود دارد، ما این روشهای را در ادامه این مقاله بررسی خواهیم کرد.
چگونه یک آرایه را مقداردهی اولیه کنیم
در این بخش، به مقداردهی اولیه آرایه و اضافه کردن مقادیر به متغییر آرایه میپردازیم.
راههای مختلفی برای مقداردهی اولیه آرایه وجود دارد. در اکثر مواقع از سازنده array()
برای ساخت و مقداردهی اولیه آرایه استفاده میشود.
1 |
<?php
|
2 |
$array = array(); |
3 |
?>
|
در قطعه کد بالا، متغییر $array
با یک آرایه خالی مقداردهی اولیه شده است.
همچنین میتوانید از دستور زیر که از پیاچپی ۵.۴ به بعد ارائه شد برای ساخت آرایه استفاد کنید.
1 |
<?php
|
2 |
$array = []; |
3 |
?>
|
حالا ببینیم چگونه میتوان المنتهایی را به آرایه اضافه کرد.
1 |
<?php
|
2 |
$array = []; |
3 |
$array[] = 'One'; |
4 |
$array[] = 'Two'; |
5 |
$array[] = 'Three'; |
6 |
echo '<pre>'; |
7 |
print_r($array); |
8 |
?>
|
قطعه کد بالا نتایج زیر را تولید میکند.
1 |
Array
|
2 |
(
|
3 |
[0] => One |
4 |
[1] => Two |
5 |
[2] => Three |
6 |
)
|
نکته حائز اهمیت این است که اندیسهای یک آرایه از صفر شروع میشود. زمانی که یک المنت جدید را به آرایه اضافه میکنید، اگراندیس آن را مشخص نکنید، آرایه به صورت خودکار یک اندیس به آن المنت اختصاص میدهد.
شما همچنین میتوانید در همان زمان ساخت آرایه، مقادر مورد نیاز را هم به آرایه اضافه کنید. درواقع اگر در زمان ساخت آرایه از مقادیر درون آن اطلاع دارید این بهترین روش ساخت آرایه است.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
?>
|
چگونه به المنتهای درون آرایه دسترسی پیدا کنیم
در بخش قبل گفتیم که چطور یک آرایه را بسازید و مقدار دهی اولیه کنید. در این بخش، به بررسی روشهای مختلف دسترسی به المنتهای آرایه میپردازیم.
یکی از متداولترین روشهای دسترسی به المنتهای آرایه استفاده از کلید یا اندیس است.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// get the first element of the $array array
|
5 |
echo $array[0]; |
6 |
echo "<br>"; |
7 |
|
8 |
// get the second element of the $array array
|
9 |
echo $array[1]; |
10 |
echo "<br>"; |
11 |
|
12 |
// get the third element of the $array array
|
13 |
echo $array[2]; |
14 |
echo "<br>"; |
15 |
?>
|
قطعه کد بالا نتایج زیر را تولید خواهد کرد.
1 |
One
|
2 |
Two
|
3 |
Three
|
راه بهتر و واضحتر برای نوشتن کد بالا استفاده از حلقهی foreach
برای پیمایش المنتهای درون آرایه است.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
foreach ($array as $element) { |
5 |
echo $element; |
6 |
echo '<br>'; |
7 |
}
|
8 |
?>
|
قطعه کد بالا نتایج یکسانی را تولید خواهد کرد در عین اینکه مقدار کد کمتری نیاز به نوشتن است.
همچنین میتوانید از حلقهی for
نیز برای پیمایش المنتهای آرایه استفاده کنید.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
$array_length = count($array); |
4 |
|
5 |
for ($i = 0; $i < $array_length; ++$i) { |
6 |
echo $array[$i]; |
7 |
echo '<br>'; |
8 |
}
|
9 |
?>
|
در اینجا ما از حلقه for
برای پیمایش اندیسهای موجود در آرایه استفاده کردیم و سپس مقدار ذخیره شده در آن اندیس را چاپ کردیم. در این قطعه کد، از یکی از مهترین تابعهایی که در زمینه آرایهها بسیار به کارتان خواهد آمد استفاده کردیم. تابع count
. از این تابع برای شمارش تعداد المنتهای موجود در آرایه استفاده میشود.
انواع آرایهها در پیاچپی
در این بخش به توضیح انواع آرایههایی که شما میتواند در پیاچپی از آنها استفاده کنید میپردازیم.
آرایههای دارای اندیس عددی
آرایهی دارای اندیس عددی در دسته آرایههای دارای اندیس قرار میگیرید. در حقیقت، مثالهای که تا اینجا بررسی کردیم همه از نوع آرایههای اندیس دار بودند.
اگر مقدار اندیس عددی را به صورت صریح مشخص نکنید، مقداری عددی برای این اندیس به صورت خودکار تعیین میشود.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
?>
|
در مثال بالا، ما اندیس هر آیتم را به صورت صریح و واضح مشخص نکردیم، بنابراین به صورت خودکار به اندیسهای عددی مقدار دهی میشوند.
و قطعاً میتوانید با استفاده از اندیسهای عددی، خودتان آرایهی اندیس دار بسازید، همانطور که در مثال پایین نشان داده شده است.
1 |
<?php
|
2 |
$array = []; |
3 |
$array[0] = 'One'; |
4 |
$array[1] = 'Two'; |
5 |
$array[2] = 'Three'; |
6 |
?>
|
آرایههای انجمنی
آرایههای انجمنی شبیه آرایههای اندیس عددی هستند، با این تفاوت که شما میتوانید مقدار کلیدهای آرایهها از نوع رشته تعیین کنید.
در مثال پایین میبینیم که چگونه یک آرایه انجمنی تعریف میشود.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
];
|
میتوانید از ساختار زیر نیز استفاده کنید.
1 |
<?php
|
2 |
$employee = []; |
3 |
$employee['name'] = 'John'; |
4 |
$employee['email'] = 'john@example.com'; |
5 |
$employee['phone'] = '1234567890'; |
6 |
?>
|
برای دسترسی به مقدار یک آرایه انجمنی، میتواند از اندیس یا از حلقهی foreach
استفاده کنید.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
];
|
7 |
|
8 |
// get the value of employee name
|
9 |
echo $employee['name']; |
10 |
|
11 |
// get all values
|
12 |
foreach ($employee as $key => $value) { |
13 |
echo $key . ':' . $value; |
14 |
echo '<br>'; |
15 |
}
|
16 |
?>
|
همانطور که میبینید، در اینجا ما مقدار نام را به صورت مستقیم استعلام کردهایم، و سپس از حلقه ی foreach
برای دسترسی به تمام جفتهای کلید-مقدار درون آرایه استفاده کردیم.
آرایههای چند بعدی
در مثالهایی که تا به اینجا بررسی کردیم، از دادههای اسکالر به عنوان المنتهای آرایه استفاده کردیم. در حقیقت، شما حتی میتوانید آرایهها را به عنوان المنت آرایههای دیگر نیز ذخیره کنید، به این نوع آرایهها، آرایههای چندبعدی گفته میشود.
مثال زیر را با هم بررسی میکنیم.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
'hobbies' => ['Football', 'Tennis'], |
7 |
'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw'] |
8 |
];
|
9 |
?>
|
همانطور که مشاهده میکنید، کلید hobbies
در آرایه $employee
، آرایهای از تفریحات را ذخیره میکند. به همین روش، کلید profiles
آرایهای انجمنی از اطلاعات پروفایل کاربر را ذخیره کرده است.
خب، حالا بررسی کنیم که چگونه میتواند به مقادیر آرایه چندبعدی دسترسی پیدا کنیم.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
'hobbies' => ['Football', 'Tennis'], |
7 |
'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw'] |
8 |
];
|
9 |
|
10 |
// access hobbies
|
11 |
echo $employee['hobbies'][0]; |
12 |
// Football
|
13 |
|
14 |
echo $employee['hobbies'][1]; |
15 |
// Tennis
|
16 |
|
17 |
// access profiles
|
18 |
echo $employee['profiles']['facebook']; |
19 |
// johnfb
|
20 |
|
21 |
echo $employee['profiles']['twitter']; |
22 |
// johntw
|
23 |
?>
|
همانطور که میبینید، المنتهای آرایههای چند بعدی، توسط اندیس یا کلید آن المنت در هرکدام از آرایهها به دست میآید.
تابعهای مفید قابل استفاده در آرایهها
در این بخش، به بررسی تعدادی از توابع کاربردی در آرایهها میپردازیم که عموما برای کار با آرایهها به آنها نیاز دارید.
تابع count
از تابع count
برای شمارش تعداد المنتهای درون آرایه استفاده میشود. این تابع زمانی که میخواهید یک آرایه را با حلقههای for
پیمایش کنید مورد استفاده قرار میگیرد.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// print the number of elements in the array
|
5 |
echo count($array); |
6 |
|
7 |
// the above code should output
|
8 |
3
|
9 |
?>
|
تابع is_array
این تابع، یکی از کاربردیترین توابع در زمان کار با آرایهها در پیاچپی است. این تابع بررسی میکند که آیا نوع یک متغییر از نوع آرایهست یا خیر.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// check if the variable is an array
|
5 |
if (is_array($array)) |
6 |
{
|
7 |
// perform some array operation
|
8 |
}
|
9 |
?>
|
هرزمان که از نوع داده مطمئن نبود که آیا داده از نوع آرایه است یا خیر، از این تابع قبل از اینکه هر عملیاتی روی آرایه انجام دهید، استفاده کنید.
تابع in_array
اگر میخواهید چک کنید که آیا المنت مورد نظر شما در آرایه وجود دارد یا خیر، اینجا تابع in_array
هست که به کمک شما خواهد آمد.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// check if a variable is an array
|
5 |
if (in_array('One', $array)) |
6 |
{
|
7 |
echo 'Yes'; |
8 |
}
|
9 |
else
|
10 |
{
|
11 |
echo 'No'; |
12 |
}
|
13 |
?>
|
آرگومان اول در تابع in_array
همان المنت مد نظر شماست که میخواهید ببینید در آرایه وجود دارد یا خیر و آرگومان دوم شامل خود آرایه است
تابع explode
تابع explode
یک رشته را به چندین قسمت تقسیم میکند و آن را به صورت آرایه بر میگرداند. به عنوان مثال، فرض کنید که رشتهای دارید که در آن عبارتها توسط کاما از یکدیگر جدا شدهاند و قصد دارید که این رشته را مناسب با آن کاماها تقسیم کنید.
1 |
<?php
|
2 |
$string = "One,Two,Three"; |
3 |
|
4 |
// explode a string by comma
|
5 |
$array = explode(",", $string); |
6 |
|
7 |
// output should be an array
|
8 |
echo '<pre>'; |
9 |
print_r($array); |
10 |
|
11 |
// output
|
12 |
/*Array
|
13 |
(
|
14 |
[0] => One
|
15 |
[1] => Two
|
16 |
[2] => Three
|
17 |
)*/
|
18 |
?>
|
آرگومان اول تابع explode
رشته جدا کننده است (همان مکانهای تقسیم، که در اینجا کاما مد نظر است) و آرگومان دوم خود آرایه است.
تابع implode
این تابع برعکس تابع explode
عمل میکند. با دادن یک رشتهی چسب (glue) و آرایه مورد نظر، تابع implode
رشتهای را با پیوستن تمام عناصر آرایه با رشته چسب بین آنها تولید میکند.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
$string = implode(",", $array); |
5 |
|
6 |
// output should be a string
|
7 |
echo $string; |
8 |
|
9 |
// output: One,Two,Three
|
10 |
?>
|
آرگومان اول تابع implode
رشته چسب مورد مورد نظر است و آرگومان دوم همان آرایه جهت تبدیل کردن به رشته ست.
تابع array_push
از تابع array_push
جهت اضافه کردن المنت جدید به انتهای آرایه استفاده میشود.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
array_push($array, 'Four'); |
4 |
|
5 |
echo '<pre>'; |
6 |
print_r($array); |
7 |
|
8 |
// output
|
9 |
/*Array
|
10 |
(
|
11 |
[0] => One
|
12 |
[1] => Two
|
13 |
[2] => Three
|
14 |
[3] => Four
|
15 |
)*/
|
16 |
?>
|
آرگومان اول، آرایه است، و آرگومانهای پس از آن، همان المنتهایی هستند که میخواهید به انتهای آرایه اضافه کنید.
تابع array_pop
تابع array_pop
یک المنت را از آخر آرایه حذف میکند.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
$element = array_pop($array); |
4 |
|
5 |
echo '<pre>'; |
6 |
print_r($array); |
7 |
|
8 |
// output
|
9 |
/*Array
|
10 |
(
|
11 |
[0] => One
|
12 |
[1] => Two
|
13 |
)*/
|
14 |
?>
|
تابع array_pop
المنت حذف شده از انتهای آرایه را میگرداند، بنابراین میتوانید آن را در متغییری ذخیره کنید. این تابع در کنار تابع array_push
برای ساخت ساختمان دادههایی مانند پشتهها مورد استفاده قرار میگیرد.
نتیجهگیری
تمامی چیزی که نیاز دارید تا بتوانید از آرایهها در پیاچپی استفاده کنید در این مقاله ارائه شد. شما دیدید که چگونه میتوان آرایهها را ساخت و به دادههای درون آنها دسترسی پیدا کرد. همچنین انواع آرایههای مختلف در پیاچپی را مشاهده کردید و در آخر نگاهی داشتیم به تعدادی از تابعهای بسیار کاربردی درون پیاچپی که برای کار با آرایههای مورد استفاده قرار میگیرند.