وبلاگ

آموزش آرایه‌ها در PHP


رقیه اباذری رقیه اباذری

در این پست با اصول آرایه‌ها در PHP آشنا خواهید شد. نحوه ایجاد آرایه و نحوه استفاده از آرایه‌های انجمنی و چند بعدی را یاد خواهید گرفت و نمونه‌های زیادی از آرایه‌ها را در عمل و به همراه مثال مشاهده خواهید کرد. 

توجه

چنانچه به مباحث برنامه‌نویسی علاقه‌مد هستید، پیشنهاد می‌کنیم حتما از فیلم‌های آموزش برنامه نویسی که به صورت رایگان قرار داده‌ایم مانند آموزش رایگان لاراول و آموزش html استفاده کنید.

آرایه چیست؟

آرایه در PHP یک ساختار داده است که به شما امکان می‌دهد چند عنصر را در یک متغیر ذخیره کنید. این عناصر به صورت جفت key-value ذخیره می‌شوند. در واقع هر زمان نیاز به ذخیره لیستی از عناصر باشد، می‌توان از یک آرایه استفاده کرد. اکثر اوقات همه موارد موجود در یک آرایه، انواع داده‌های مشابهی دارند.

برای مثال فرض کنید باید نام میوه‌ها را ذخیره کنید. بدون استفاده از آرایه، متغیرهای مختلفی برای ذخیره نام‌های مختلف میوه ایجاد می‌کنید. اما اگر از آرایه‌ای برای ذخیره نام میوه‌ها استفاده کنید، به صورت زیر خواهد بود:

<?php
$array_fruits = array('Apple', 'Orange', 'Watermelon', 'Mango');
?>

همانطور که مشاهده می‌کنید، از متغیر $array_fruits برای ذخیره نام‌های مختلف میوه استفاده کرده‌ایم. یک نکته جالب در مورد این روش این است که بعداً می‌توانید عناصر بیشتری را به متغیر $array_fruits اضافه کنید.

روش‌های زیادی برای دستکاری مقادیر در آرایه وجود دارد. در بخش بعدی این مقاله به بررسی آن‌ها خواهیم پرداخت.

چگونه مقداردهی اولیه را انجام دهیم؟

در این بخش چگونگی مقداردهی اولیه یک آرایه و افزودن مقادیر را در آن آرایه بررسی خواهیم کرد.

چند روش برای مقداردهی آرایه‌ها وجود دارد، یکی از این روش‌ها استفاده از فانکشن array() است.

<?php
$array = array();
?>

در قطعه کد بالا متغیر $array با یک آرایه خالی مقداردهی اولیه می شود.

از PHP 5.4 می‌توانید از دستور زیر برای شروع آرایه استفاده کنید.

<?php
$array = [];
?>

حالا ببینیم چطور عناصر را به یک آرایه اضافه کنیم.

<?php
$array = [];
$array[] = 'One';
$array[] = 'Two';
$array[] = 'Three';
echo '<pre>';
print_r($array);
?>

قطعه فوق باید خروجی زیر را ایجاد کند:

Array
(
    [0] => One
    [1] => Two
    [2] => Three
)​

توجه

نکته مهمی که در اینجا باید به آن توجه کنید این است که ایندکس آرایه با 0 شروع می‌شود. هر زمان که یک عنصر جدید را بدون مشخص کردن ایندکس به آرایه اضافه کنید، آرایه به صورت خودکار یک ایندکس را اختصاص می‌دهد.

البته می‌توانید آرایه‌ای را که قبلاً مقادیر آن مقداردهی شده است، ایجاد کنید. اگر از قبل مقدار مقادیر را می‌دانید، کد زیر مختصرترین روش برای ساخت آرایه است.

<?php
$array = ['One', 'Two', 'Three'];
?>

نحوه دسترسی به عناصر آرایه

در بخش قبلی در مورد چگونگی مقداردهی اولیه یک متغیر آرایه بحث کردیم. در این بخش چند روش برای دسترسی به عناصر آرایه را یاد می‌گیریم.

اولین روش برای دستیابی به عناصر آرایه، واکشی آن‌ها توسط کلید آرایه یا اندیس آرایه است.

<?php
$array = ['One', 'Two', 'Three'];
 
// get the first element of the $array array
echo $array[0];
echo "<br>";
 
// get the second element of the $array array
echo $array[1];
echo "<br>";
 
// get the third element of the $array array
echo $array[2];
echo "<br>";
?>

قطعه فوق باید خروجی زیر را ایجاد کند:

One
Two
Three

یک روش تمیزتر برای نوشتن کد بالا استفاده از حلقه foreach برای تکرار از طریق عناصر آرایه است.

<?php
$array = ['One', 'Two', 'Three'];
 
foreach ($array as $element) {
  echo $element;
  echo '<br>';
}
?>

قطعه فوق باید همان خروجی را تولید کند و کد بسیار کمتری هم دارد.

به همین ترتیب می‌توانید از حلقه for برای عبور از میان عناصر آرایه نیز استفاده کنید.

<?php
$array = ['One', 'Two', 'Three'];
$array_length = count($array);
 
for ($i = 0; $i < $array_length; ++$i) {
  echo $array[$i];
  echo '<br>';
}
?>

در اینجا از حلقه for استفاده می‌کنیم تا هر شاخص موجود در آرایه را مرور کنیم و بعد مقدار ذخیره شده در آن شاخص را تکرار می‌کنیم. در این قطعه کد، یک فانکشن مهم معرفی کرده‌ایم که هنگام کار با آرایه‌ها امکان استفاده از آن را دارید یعنی فانکشن count(). این تابع برای شمارش تعداد عناصر موجود در یک آرایه استفاده می‌شود.

انواع آرایه‌ها در PHP

در این بخش انواع مختلف آرایه‌هایی را که در PHP قابل استفاده هستند را با هم بررسی می‌کنیم.

آرایه‌های عددی

نمونه‌هایی که تاکنون در این مقاله بحث کردیم، آرایه‌های عددی یا ایندکس‌شده، هستند. در این آرایه یک فهرست عددی به همراه مقادیرشان ایجاد می‌شود. وقتی ایندکس را مشخص نکنید، ایندکس با عدد صفر آغاز می‌شود.

<?php
$array = ['One', 'Two', 'Three'];
?>

در مثال بالا برای هر مورد به طور واضح ایندکس مشخص نکرده‌ایم، بنابراین به طور خودکار مقداردهی اولیه می‌شود.

البته همانطور که در قطعه کد زیر نشان داده شده است، می‌توانید با استفاده از ایندکس عددی، یک آرایه فهرست‌شده ایجاد کنید.

<?php
$array = [];
$array[0] = 'One';
$array[1] = 'Two';
$array[2] = 'Three';
?>

آرایه‌های انجمنی

آرایه انجمنی مشابه آرایه عددی است اما می‌توانید از مقادیر استرینگ برای کلیدهای آرایه استفاده کنید.

حالا ببینیم چگونه یک آرایه انجمنی را تعریف کنیم.

<?php
$employee = [
  'name' => 'Pakzad',
  'email' => 'info@baversion.com',
  'phone' => '1234567890',
];

همچنین می‌توانید از روش زیر نیز استفاده کنید.

<?php
$employee = [];
$employee['name'] = 'Pakzad';
$employee['email'] = 'info@baversion.com';
$employee['phone'] = '1234567890';
?>

برای دستیابی به مقادیر یک آرایه انجمنی می توانید از ایندکس یا حلقه foreach استفاده کنید.

<?php
$employee = [
  'name' => 'Pakzad',
  'email' => 'info@baversion.com',
  'phone' => '1234567890',
];
 
// get the value of employee name
echo $employee['name'];
 
// get all values
foreach ($employee as $key => $value) {
  echo $key . ':' . $value;
  echo '<br>';
}
?>

همانطور که مشاهده می‌کنید در اینجا name را با کوئری مستقیم از آن به دست آوردیم و سپس از حلقه foreach برای بدست آوردن تمام جفت‌های key-value در آرایه استفاده کردیم.

آرایه‌های چند بعدی

در نمونه‌هایی که تاکنون بررسی کردیم، از مقیاس‌های عددی به عنوان عناصر آرایه استفاده کرده‌ایم. در واقع شما حتی می‌توانید آرایه‌ها را به عنوان عناصر آرایه‌های دیگر ذخیره کنید که به آن یک آرایه چند بعدی می‌گویند.

بیایید به یک مثال نگاه کنیم.

<?php
$employee = [
  'name' => 'Pakzad',
  'email' => 'info@baversion.com',
  'phone' => '1234567890',
  'hobbies' => ['Football', 'Tennis'],
  'profiles' => ['facebook' => 'Pakzadfb', 'twitter' => 'Pakzadtw']
];
?>

همانطور که مشاهده می‌کنید، کلید hobbies در آرایه $employee مجموعه‌ای از عادات یا hobbies را در خود جای داده است. به همین ترتیب، کلید profiles یک آرایه انجمنی از profiles مختلف را در خود نگه می‌دارد.

در ادامه ببینیم چطور می‌توان به مقادیر یک آرایه چند بعدی دسترسی پیدا کرد.

<?php
$employee = [
  'name' => 'Pakzad',
  'email' => 'info@baversion.com',
  'phone' => '1234567890',
  'hobbies' => ['Football', 'Tennis'],
  'profiles' => ['facebook' => 'Pakzadfb', 'twitter' => 'Pakzadtw']
];
 
// access hobbies
echo $employee['hobbies'][0];
// Football
 
echo $employee['hobbies'][1];
// Tennis
 
// access profiles
echo $employee['profiles']['facebook'];
// Pakzadfb
 
echo $employee['profiles']['twitter'];
// Pakzadtw
?>

همانطور که مشاهده می‌کنید، به عناصر یک آرایه چند بعدی با شاخص یا کلید آن عنصر در هر قسمت آرایه دسترسی داریم.

تعدادی فانکشن مفید در آرایه

در این بخش تعدادی از فانکشن مفید آرایه را خواهیم دید که اغلب برای کار با آرایه استفاده می‌شوند.

فانکشن count

از فانکشن count برای شمارش تعداد عناصر در یک آرایه استفاده می‌شود. اگر می‌خواهید آرایه‌ای را با حلقه for تکرار کنید، این فانکشن مفید است.

<?php
$array = ['One', 'Two', 'Three'];
 
// print the number of elements in the array
echo count($array);
 
// the above code should output
3
?>

فانکشن is_array

این فانکشن یکی از فانکشن‌های مفید برای کار با آرایه‌ها است و برای بررسی اینکه یک متغیر آرایه‌ای یا از نوع داده دیگری است، استفاده می‌شود.

<?php
$array = ['One', 'Two', 'Three'];
 
// check if the variable is an array
if (is_array($array))
{
  // perform some array operation
}
?>

اگر از نوع داده مطمئن نیستید، همیشه باید قبل از انجام هرگونه عملی روی آرایه از این فانکشن استفاده کنید.

فانکشن in_array

اگر می‌خواهید چک کنید که آیا یک عنصر در آرایه وجود دارد یا نه از این فانکشن استفاده کنید.

<?php
$array = ['One', 'Two', 'Three'];
 
// check if a variable is an array
if (in_array('One', $array))
{
  echo 'Yes';
}
else
{
  echo 'No';
}
?>

اولین آرگومان فانکشن in_array عنصری است که می‌خواهید بررسی کنید و آرگومان دوم خود آرایه است.

فانکشن explode

فانکشن explode استرینگی را به چند قسمت تقسیم کرده و به صورت آرایه برمی‌گرداند. به عنوان مثال فرض کنیم شما یک استرینگ دارید که عناصر آن با کاما جدا شده‌اند و قصد دارید آن‌ها را تا جایی که کاما درج شده، جدا کنید.

<?php
$string = "One,Two,Three";
 
// explode a string by comma
$array = explode(",", $string);
 
// output should be an array
echo '<pre>';
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
    [2] => Three
)*/
?>

اولین آرگومان فانکشن explode یک استرینگ جداکننده است. یعنی استرینگی که بر روی آن عمل جداسازی انجام می‌دهید و آرگومان دوم خود استرینگ است.

فانکشنimplode

این فانکشن برعکس فانکشن explode است. فانکشن implodeتمام عناصر یک آرایه را گرفته و با اتصال آن‎‌ها به یکدیگر یک استرینگ ایجاد می‌کند.

<?php
$array = ['One', 'Two', 'Three'];
 
$string = implode(",", $array);
 
// output should be a string
echo $string;
 
// output: One,Two,Three
?>

اولین آرگومان تابع implode یک استرینگ اتصال است و آرگومان دوم آرایه برای implode است. این پارامتر یک استرینگ است که مشخص می‌کند وقتی اعضای آرایه به هم ممتصل می‌شوند، با چه آرایه‌ای جدا شوند که دوباره بتوانیم با همان جداکننده از هم تشخیص داده و به آرایه تبدیل کنیم

فانکشن array_push

از فانکشن array_push برای افزودن عناصر جدید به انتهای آرایه استفاده می‌شود.

<?php
$array = ['One', 'Two', 'Three'];
array_push($array, 'Four');
 
echo '<pre>';
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
    [2] => Three
    [3] => Four
)*/
?>

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

فانکشن array_pop

فانکشن array_pop یک عنصر را از انتهای آرایه حذف می‌کند.

<?php
$array = ['One', 'Two', 'Three'];
$element = array_pop($array);
 
echo '<pre>';
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
)*/
?>

فانکشن array_pop عنصری را که از یک آرایه حذف شده است را ریترن می‌کند، بنابراین می‌توانید عنصر حذف شده را در یک متغییر دیگر ریخته و استفاده کنید. فانکشن array_push هم داریم که برای اجرای ساختارهای داده مانند stacks مفید است.

از این فانکشن برعکس array_pop که از آخر آرایه حذف می‌کرد، برای اضافه کردن به آخر آرایه استفاده می‌کنیم، اگه نیاز داریم که یک عنصر به آن اضافه کنیم، پارامتر دوم، عنصر جدید می‌شود، اگه قرار است 10 عنصر اضافه شود، پارامتر دوم تا یازدهم، عناصر بعدی می‌شوند.

<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>

خروجی قطعه کد بالا به شکل زیر خواهد بود.

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

نتیجه‌گیری

این پست به شما برای شروع کدنویسی با آرایه‌ها در PHP کمک می‌کند. نحوه ایجاد آرایه‌ها و نحوه بازیابی عناصر از آن‌ها را با هم بررسی کردیم. انواع مختلف آرایه‌ها در PHP و تعدادی از مفیدترین فانکشن‌های PHP برای کار با آرایه ها را با هم در این مقاله یاد گرفتیم .


php

رقیه اباذری
رقیه اباذری

تو دانشگاه IT خوندم و اکثر منابع کتاب‌های ترجمه شده بودند و صدالبته مبهم :( مثلا element رو "عنصر" ترجمه می‌کردن و من همیشه می‌رفتم تو شیمی و جدول مندلیف. تو باورژن سعی کردم تا حد ممکن مطالب رو با زبان ساده و قابل درک بنویسم. باشد که کسانی که تازه پا به عرصه برنامه‌نویسی گذاشتن، راغب‌تر بشن و با نظرات و فیدبک‌های شما راه هموارتر بشه:)

مطالب مرتبط

دیزاین پترن (الگوهای طراحی) در برنامه‌نویسی

دیزاین پترن‌ها، سلوشن‌هایی (راه‌کارهایی) بهینه و با قابلیت استفاده مجدد، برای مشکلات برنامه‌نویسی هستند که هر روز با آن‌ها سروکار داریم. هر دیزاین پترن در واقع یک الگو است که باید در شرایط درستی پیاده‌سازی شود. دیزاین پترن‌ها مختص زبان خاصی نیستند. یک دیزاین پترن خوب بسته به قابلیت‌های زبان‌های برنامه‌نویسی باید در اکثر زبان‌های برنامه‌نویسی قابل پیاده‌سازی باشد.

استخراج داده‌ها از JSON تودرتو با استفاده از روش خودفراخوانی و حلقه‌ها در PHP

یک سند JSON می‌تواند اشیائی را که در داخل سایر اشیاء JSON قرار دارد، داشته باشد. اشیاء JSON زوج‌هایی با ارزش کلیدی هستند و روش‌های مختلفی وجود دارد که می‌توانید برای دسترسی به اشیاء JSON از یک سند JSON تودرتو استفاده کنید.

افزایش سرعت لاراول با کمک سول (swoole)

Swoole فریم‌ورک برنامه‌نویسی همگام در سطح تولید برای PHP است. اجرای swoole بر روی لاراول، عملکرد اپلیکیشن لاراولی شما را تقویت می‌کند.

مباحث پیشرفته شی‌گرایی در PHP

مباحث پیشرفته شی‌گرایی شامل کلاس انتزاعی، رابط، کلاس‌های ناشناس، انقیاد دیررس استاتیک، Traits، تعیین نوع پارامتر و Iterators و برخی مباحث دیگر است. برای یادگیری الگوی معماری MVC باید به شی‌گرایی مسلط باشید و این تسلط هم باید در اصول شی‌گرایی و هم در مباحث پیشرفته شی‌گرایی باشد.

دیدگاه‌ها