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

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

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

آرایه چیست و در PHP چه کاربردی دارد ؟

همانطور که احتمالاً تا کنون متوجه شدید، آرایه یک متغیر (متغیر در PHP) با امکان ذخیره‌سازی چندین مقدار است. اندازه آرایه می‌تواند متفاوت باشد و بسته به نیاز ما تغییر کند. در زبان برنامه نویسی PHP نوع داده‌ایِ عناصر هر آرایه می‌توانند با هم یکسان بوده یا متفاوت باشد.

هنگام برنامه‌نویسی، ممکن است بارها از آرایه‌ها کمک بگیریم. در حالت کلی می‌توان اکثر کاربردها را در سه دسته زیر قرار داد.

  • ذخیره سازی موقت چند داده
  • محاسبات مختلف روی داده‌های گروهی (مثلاً مرتب‌سازی آرایه یا حذف عناصر تکراری)
  • کار با فیلدهای چندگانه (Multiple) ارسال شده از سمت کاربر توسط PHP

ساخت آرایه در PHP

در زبان PHP به کمک تابع array() می‌توان یک آرایه ایجاد کرد.

$test_array = array();

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

علاوه بر تابع array، می‌توانیم از [] برای تعریف یک آرایه و اعضای آن استفاده کنیم:

$names = ['omid', 'ghazal', 'ehsan', 'negar']
ساختار آرایه در برنامه نویسی
تصویر ساختار آرایه در برنامه نویسی

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

در حالت کلی شاید بتوان گفت، آرایه فقط یک نوع دارد! اما با توجه به ویژگی‌ها و کاربرهای مختلف، اکثراً آرایه در PHP را به سه نوع تقسیم‌بندی می‌کنند.

1- آرایه فهرستی (آرایه عددی)

آرایه عددی (یا Numeric) که به آرایه فهرستی (یا Indexed) نیز معروف است ساده‌ترین نوع آرایه است. این نوع آرایه‌ها فقط شامل عناصر هستند.

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

<?php
    $persons = array("Sara", "Omid", "Sam");
?>

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

به کمک علامت [] در جلوی نام آرایه، می‌توان به تک تک عناصر دست یافت.

<?php
    echo $person[1];
    // Omid
?>

همانطور که می‌بینید خروجی قطعه کد بالا، عنصر دوم (با ایندکس 1) در آرایه است.

حالت دوم تعریف آرایه عددی

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

<?php

    $persons_new = array();

    $persons_new[0] = "Sara";
    $persons_new[1] = "Omid";

?>

در بخش کار با آرایه یاد می‌گیریم با تابع array_push() اعضای جدید را بدون داشتن آخرین اندیس به آرایه اضافه کنیم.

2- آرایه انجمنی (کلید و مقدار)

آرایه‌های انجمنی بسیار شبیه به آرایه‌های عددی هستند. با این تفاوت که به جای ایندکسِ عددی، یک کلید (از نوع رشته PHP) تعریف می‌شود.

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

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

$ages = array( "sara" => 20, "omid" => 24, "sam" => 23 );

حال برای دسترسی به سن سارا، کافی است آرایه را به شکل زیر صدا بزنیم:

echo $ages["sara"];

مشابه آرایه‌های عددی، می‌توان عناصر دیگر این آرایه را به صورت زیر نیز تعریف کرد:

$ages["nazanin"] = 17;

به دلیل اینکه در آرایه‌های Associative به هر مقدار یک کلید نسبت می‌دهیم، به این آرایه‌ها، آرایه‌های کلید-مقدار (Key-Value) نیز گفته می‌شود.

3- آرایه چند بعدی (ماتریس)

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

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

هر عنصر از آرایه اصلی، یک آرایه است که اطلاعات یکی از افراد در آن قرار گرفته است. آرایه‌ی چند بعدی زیر، نام و سن ۳ نفر را نگهداری می‌کند.

<?php

// Define Multidimensional Array:
$users = array(
    array(
        "name" => "Sara",
        "age" => 20,
        "email" => "sara@domain.com",
    ),
    array(
        "name" => "Omid",
        "age" => 24,
        "email" => "omid@domain.com",
    ),
    array(
        "name" => "Sam",
        "age" => 23,
        "email" => "sam@domain.com",
    )
);
?>

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

آموزش شرط در PHP ، ترفندها و ۴ ساختار اصلی

آموزش شرط در PHP ، ترفندها و ۴ ساختار اصلی

کار با آرایه در PHP

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

افزودن عضو جدید به آرایه PHP

برای افزودن یک یا چند عنصر جدید به آرایه، می‌توان از تابع array_push() استفاده کرد. این تابع حداقل دو ورودی لازم دارد.

  • ورودی اول متغیری است که آرایه را مشخص می‌کند.
  • ورودی دوم به بعد، عناصر جدید ما هستند.

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

<?php
    $names = array( "Sara", "Omid" );
    array_push( $names, "Sam", "Nazanin" );

    // Array( [0]=> Sara [1]=> Omid [2]=> Sam [3]=> Nazanin )
?>

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

چاپ آرایه در php

در خروجی برنامه و یا هنگام تست کردن آن، بارها نیاز داریم تا مقادیر یک آرایه را در خروجی چاپ کرده و ببینیم. با استفاده از حلقه‌ها (که در ادامه بررسی می‌کنیم) و دستورِ دوست‌داشتنی echo می‌توان مقادیر درون یک آرایه را چاپ کرد. (با echo و print در PHP بیشتر آشنا شوید!)

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

تابع اول: تابع print_r

تابع print_r() آرایه را گرفته و تمام مقادیر به همراه ایندکس‌ها (یا کلیدها) را چاپ می‌کند.

$arr = array( "sara", "omid", "sam" );

print_r( $arr );

// Array( [0]=>sara [1]=>omid [2]=>sara )

اگر می‌خواهید خروجی زیباتری داشته باشید، می‌توانید قبل و بعد از خروجی این تابع، یک تگ <pre> قرار دهید. با این کار فواصل ایجاد شده، در صفحه HTML نیز نمایش داده می‌شود.

<?php

$arr = array( "sara", "omid", "sam" );

echo "<pre>";
print_r( $arr );
echo "</pre>";

?>

خروجی این کد چیزی شبیه به تصویر زیر خواهد شد:

نمونه خروجی چاپ آرایه با print_r
نمونه خروجی چاپ آرایه با print_r

تابع دوم: تابع var_dump

تابع var_dump() آرایه را به‌عنوان ورودی گرفته و از نظر ظاهری چیزی شبیه به تابع اول چاپ می‌کند. با این تفاوت که نوع داده‌ای هر کدام از عناصر را نیز مشخص می‌کند.

<?php
$arr = array( "sara", "omid", "sam" );

echo "<pre>";
var_dump( $arr );
echo "</pre>";
?>

خروجی کد بالا چیزی شبیه زیر می‌شود:

نتیجه dump کردن آرایه در PHP
نتیجه dump کردن آرایه در PHP

جایگزین کردن مقدار جدید در آرایه

گاهی اوقات نیاز داریم مقدار یک عنصر از آرایه را بازنویسی (overwrite) یا با مقدار جدیدی عوض کنیم.

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

<?php

// Changing an Array Element:
$arr = array( "Red", "Yellow", "Green" );

$arr[1] = "Blue";

// new array:
// array( "Red", "Blue", "Green" )

?>

در این‌جا مقدار دومین عضوِ آرایه را از Yellow به Blue تغییر دادیم.

این مسئله در آپدیت آرایه‌های انجمنی بیشتر اتفاق می‌افتد.

استفاده از آرایه در حلقه

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

در PHP یک حلقه مخصوص آرایه‌ها به نام foreach داریم. با این تابع می‌توان روی هر نوع آرایه‌ای حرکت کرد.

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

اگر آرایه $persons یک آرایه عددی باشد، برای دسترسی به عناصر آن به صورت زیر عمل می‌کنیم.

<?php

foreach( $persons as $name ){
    echo $name . "<br>"
}

?>

درصورتی‌که با آرایه $ages که یک آرایه انجمنی است، به صورت قبل عمل کنیم، صرفاً سن افراد (مقادیر آرایه یا valueها) را خواهیم داشت.

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

<?php

foreach( $ages as $name => $age ){
    echo "Age of" . $name . "is: " . $age . "<br>";
}

?>
حلقه در PHP : آموزش ۴ نوع حلقه for و while با مثال

حلقه در PHP : آموزش ۴ نوع حلقه for و while با مثال

توابع آرایه در پی اچ پی

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

محاسبه اندازه آرایه در PHP

تابع count() آرایه را گرفته و اندازه آن را به ما می‌دهد. منظور از اندازه آرایه، تعداد عناصر موجود در آرایه است.

<?php
$test = array( 5, 7, 11, 6, 14, 25 );

echo count( $test );   // 6
?>

درصورتی‌که یک آرایه چند بعدی داشته باشیم، تعداد عناصر (آرایه‌های) سطح اول را شمرده و برمی‌گرداند.

بررسی آرایه بودن یک متغیر

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

تابع is_array() یک متغیر به‌عنوان ورودی گرفته و نتیجه را به صورت boolean به دو حالت true یا false بازمی‌گرداند. از این تابع می‌توانیم در ساختار شرط های PHP استفاده کنیم.

<?php
$var = "Test SabzDanesh text!";
$arr = array( "SabzDanesh", "Learning" );

echo is_array( $var ); // false
echo is_array( $arr ); // true

?>

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

مرتب سازی آرایه ها در PHP

مرتب سازی آرایه ها در PHP

جمع بندی: آرایه در PHP

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

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

علاوه بر مرور چند ترفند در کار با آرایه، دیدیم که می‌توانیم مقادیر آرایه را بازنویسی کرده و تغییر دهیم. مقادیر جدیدی را با array_push() به آرایه اضافه کنیم. با is_array() آرایه بودن یک متغیر را بررسی کرده و از foreach برای دسترسی به همه اعضای آن استفاده کنیم.

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

این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP