آموزش PHP قسمت سوم

  • September 15, 2022 8:26 pm
  1. عبارات شرطی
  2. Break و Continue
  3. توابع یا Functions
  4. آرایه ها

۱۵. عبارات شرطی

اغلب هنگام نوشتن کد، نیاز دارید اقدامات مختلفی را برای شرایط مختلف انجام دهید. برای این کار می توانید از دستورات شرطی در کد خود استفاده کنید.
 
در PHP دستورات شرطی زیر را داریم:
 
  • دستور if – اگر یک شرط درست باشد، کدی را اجرا می کند
  • دستور if…else – در صورت صحیح بودن یک شرط، کدی را اجرا می کند و اگر آن شرط نادرست باشد، کد دیگری را اجرا می کند.
  • دستور if…elseif…else – کدهای مختلف را برای بیش از دو شرط اجرا می کند.
     
  • عبارت switch – یکی از بلوک های متعدد کد را برای اجرا انتخاب می کند.

دستور if

اگر یک شرط درست باشد دستور if مقداری کد را اجرا می کند.
 
سینتکس:
if (condition) {
  code to be executed if condition is true;
}

مثال:

کدی بنویسید که اگر زمان فعلی (HOUR) کمتر از 20 باشد ، در خروجی بنویسد “!Have a good day” 
<?php

  $t = date("H");

  if ($t < "20") {
    echo "Have a good day!";
  }

?>
flesh

!Have a good day

دستور if…else

دستور if…else مقداری کد را در صورت صحیح بودن یک شرط و کد دیگری را در صورت نادرست بودن آن شرط اجرا می کند.
 
سینتکس:
if (condition) {
  code to be executed if condition is true;
} else {
  code to be executed if condition is false;
}

مثال:

کدی بنویسید که اگرزمان فعلی کمتر از 20 بود، خروجی “!Have a good day” و در غیر این صورت “Have a good night” را چاپ نماید. ( با این فرض که الان ساعت 10 می باشد )
<?php

  $t = date("H");

  if ($t < "20") {
    echo "Have a good day!";
  } else {
    echo "Have a good night!";
  }

?>
flesh

Have a good day!

if…elseif…else

دستور if…elseif…else کدهای مختلف را برای بیش از دو شرط اجرا می کند.

سینتکس:

if (condition) {
  code to be executed if this condition is true;
} elseif (condition) {
  code to be executed if first condition is false and this condition is true;
} else {
  code to be executed if all conditions are false;
}

مثال:

برنامه ای بنویسید که اگر زمان فعلی کمتر از 10 باشد ، خروجی “Have a good morning!” ، اگر کمتر از 20 باشد خروجی “Have a good day!” و در غیر این صورت “Have a good night!” را چاپ نماید. ( با این فرض که الان ساعت 14 می باشد )

 

<?php

  $t = date("H");

  if ($t < "10") {
    echo "Have a good morning!";
  } elseif ($t < "20") {
    echo "Have a good day!";
  } else {
    echo "Have a good night!";
  }

?>
flesh

Have a good day!

دستور switch…case

دستور switch-case برای انجام اقدامات مختلف بر اساس شرایط مختلف استفاده می شود.
 
به عبارت دیگر از دستور switch-case برای انتخاب یکی از چندین بلوک کد برای اجرا استفاده می شود.
 
 
دستور switch-case جایگزینی برای دستور if-elseif-else است و تقریباً همان کار را انجام می دهد. دستور switch-case یک متغیر را با یک مقدار مقایسه می کند تا زمانی که مطابقت را پیدا کند، و سپس بلوک کد مربوط به آن تطابق را اجرا می کند.
 

سینتکس:

switch (n) {
  case label1:
    code to be executed if n=label1;
    break;
  case label2:
    code to be executed if n=label2;
    break;
  case label3:
    code to be executed if n=label3;
    break;
    ...
  default:
    code to be executed if n is different from all labels;
}
کار به این صورت است: ابتدا یک عبارت n داریم (اغلب یک متغیر)، که یک بار ارزیابی می شود. سپس مقدار عبارت با مقادیر هر مورد در ساختار مقایسه می شود. اگر مطابقت وجود داشته باشد، بلوک کد مرتبط با آن مورد اجرا می شود. از break برای جلوگیری از اجرای خودکار بلوک کد بعدی استفاده می شود. در صورتی که مطابقت پیدا نشود از عبارت default استفاده می شود.
 
مثال:
 
<?php

  $favcolor = "red";

  switch ($favcolor) {
    case "red":
      echo "Your favorite color is 
  red!";
      break;
    case "blue":
      echo "Your favorite color is 
  blue!";
      break;
    case "green":
      echo "Your favorite color is 
  green!";
      break;
    default:
      echo "Your favorite color is 
  neither red, blue, nor green!";
  }

?>
flesh

Your favorite color is red!

۱۶. حلقه ها

اغلب هنگام نوشتن کد، نیاز داریم یک بلوک کد بارها به تعداد معینی اجرا کنیم. بنابراین، به جای اضافه کردن چندین خط کد تکراری در یک اسکریپت، می توانیم از حلقه ها استفاده کنیم.
 
حلقه ها برای اجرای دوباره و دوباره همان بلوک کد استفاده می شوند، تا زمانی که یک شرط خاص درست باشد.
 
در PHP انواع حلقه های زیر را داریم:
  • while – تا زمانی که شرط مشخص شده درست باشد از طریق یک بلوک کد حلقه می زند.
  • do…while – یک بار از طریق یک بلوک کد حلقه می زند و تا زمانی که شرط مشخص شده درست باشد. حلقه را تکرار می کند.
  • for – از طریق یک بلوک کد به تعداد مشخصی بارها حلقه می زند.
  • foreach – از طریق یک بلوک کد برای هر عنصر در یک آرایه حلقه می زند.

حلقه while

حلقه while یک بلوک کد را تا زمانی که شرط مشخص شده درست باشد اجرا می کند.

سینتکس:

while (condition is true) {
  code to be executed;
}

مثال۱:

اعداد 1 تا 5 را چاپ کنید:
<?php
 
  $x = 1;
 
  while($x <= 5) {
    echo "The number is: $x <br>";
    $x++;
  } 

?>
flesh

The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5

  • 1 = x$      شمارنده حلقه (x$) را مقداردهی کرده و مقدار شروع را 1 قرار می دهد.
  • 5 => x$   تا زمانی که x$ کمتر یا مساوی 5 باشد، حلقه را ادامه می دهد.
  • ++x$       مقدار شمارنده حلقه را برای هر تکرار 1 واحد افزایش می دهد.

مثال۲:

در این مثال تا عدد 100 ، ده تا ده تا شمارش می شود:
<?php 
 
  $x = 0;
 
  while($x <= 100) {
    echo "The number is: $x <br>";
    $x+=10;
  }

?>
flesh

The number is: 0
The number is: 10
The number is: 20
The number is: 30
The number is: 40
The number is: 50
The number is: 60
The number is: 70
The number is: 80
The number is: 90
The number is: 100

حلقه do…while

حلقه do…while همیشه بلوک کد حلقه را یک بار اجرا می‌کند، سپس شرط را بررسی می‌کند و تا زمانی که شرط مشخص شده درست باشد، حلقه را تکرار می‌کند.
 
سینتکس:
do {
  code to be executed;
} while (condition is true);

مثال:

مثال زیر ابتدا متغیر x$ را برابر با 1 قرار می دهد.
سپس، حلقه do while مقداری خروجی می نویسد،
و سپس متغیر x$ را یک واحد افزایش می دهد.
سپس شرط بررسی می شود (آیا x$ کمتر یا برابر با 5 است؟)، و تا زمانی که x$ کمتر یا مساوی 5 باشد حلقه به کار خود ادامه می دهد.
<?php

  $x = 1;

  do {
    echo "The number is: $x <br>";
    $x++;
  } while ($x <= 5);

?>
flesh

The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5

توجه: در یک حلقه do…while، پس از اجرای دستورات درون حلقه، شرط تست می شود. این بدان معناست که حلقه do…while حداقل یک بار دستورات خود را اجرا می کند، حتی اگر شرط نادرست باشد. مثال زیر را ببینید.

در مثال زیر متغیر x$ را روی 6 تنظیم می کند، سپس حلقه را اجرا می کند و سپس شرط بررسی می شود:
<?php

  $x = 6;

  do {
    echo "The number is: $x <br>";
    $x++;
  } while ($x <= 5);

?>
flesh

The number is: 6

حلقه for

حلقه for  یک بلوک کد را به تعداد مشخصی اجرا می کند.
حلقه for  زمانی استفاده می شود که از قبل می دانید اسکریپت چند بار باید اجرا شود.
 
سینتکس:
for (init counter; test counter; increment counter) {
  code to be executed for each iteration;
}

پارامترها:

  • init counter: مقدار شمارنده حلقه را مقدار دهی اولیه کنید.
  • شمارنده تست: برای هر تکرار حلقه ارزیابی می شود. اگر به TRUE ارزیابی شود، حلقه ادامه می یابد. اگر به FALSE ارزیابی شود، حلقه به پایان می رسد.
  • increment counter: مقدار شمارنده حلقه را افزایش می دهد.
مثال زیر اعداد 0 تا 10 را نشان می دهد:

 

<?php

  for ($x = 0; $x <= 10; $x++) {
    echo "The number is: $x <br>";
  }

?>
flesh

The number is: 0
The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5
The number is: 6
The number is: 7
The number is: 8
The number is: 9
The number is: 10

  • 0 = x$      شمارنده حلقه (x$) را مقداردهی کرده و مقدار شروع را 0 قرار می دهد.
  • 10 => x$   تا زمانی که x$ کمتر یا مساوی 10 باشد، حلقه را ادامه می دهد.
  • ++x$       مقدار شمارنده حلقه را برای هر تکرار 1 واحد افزایش می دهد.
در مثال زیر تا عدد 100 ، ده تا ده تا شمارش می شود:
<?php
 
  for ($x = 0; $x <= 100; $x+=10) {
    echo "The number is: $x <br>";
  }

?> 
flesh

The number is: 0
The number is: 10
The number is: 20
The number is: 30
The number is: 40
The number is: 50
The number is: 60
The number is: 70
The number is: 80
The number is: 90
The number is: 100

  • 0 = x$      شمارنده حلقه (x$) را مقداردهی کرده و مقدار شروع را 0 قرار می دهد.
  • 100 => x$   تا زمانی که x$ کمتر یا مساوی 100 باشد، حلقه را ادامه می دهد.
  • ++x$       مقدار شمارنده حلقه را برای هر تکرار 10 واحد افزایش می دهد.

حلقه foreach

حلقه foreach   بلوک کد برای هر یک از عناصر آرایه اجرا می کند.
حلقه foreach  فقط روی آرایه ها کار می کند و برای حلقه زدن از طریق هر جفت کلید/مقدار در یک آرایه استفاده می شود.
 
سینتکس:
foreach ($array as $value) {
  code to be executed;
}
برای هر تکرار حلقه، مقدار عنصر آرایه فعلی به value$ تخصیص داده می شود و نشانگر آرایه یک واحد حرکت می کند تا زمانی که به آخرین عنصر آرایه برسد.

مثال۱:

مثال زیر مقادیر آرایه داده شده (colors$) را خروجی می دهد:
<?php
 
  $colors = array("red", "green", 
  "blue", "yellow"); 

  foreach ($colors as $value) {
    echo "$value <br>";
  }

?>
flesh

red
green
blue
yellow

مثال۲:

مثال زیر هم کلیدها و هم مقادیر آرایه داده شده (age$) را خروجی می دهد:
<?php

  $age = array("Peter"=>"35", 
  "Ben"=>"37", "Joe"=>"43");

  foreach($age as $x => $val) {
    echo "$x = $val<br>";
  }

?>
flesh

Peter = 35
Ben = 37
Joe = 43

۱۷. Break و Continue

Break

قبلاً دیدید که از دستورbreak برای “پرش به بیرون” از یک عبارت switch استفاده می شود.
 
دستور break همچنین می تواند برای پرش از یک حلقه استفاده شود.

در مثال زیر زمانی از حلقه خارج می شود که x برابر با 4 باشد:

<?php 
 
  for ($x = 0; $x < 10; $x++) {
    if ($x == 4) {
      break;
    }
    echo "The number is: $x <br>";
  }

?>
flesh

The number is: 0
The number is: 1
The number is: 2
The number is: 3

Continue

دستور continue یک تکرار (در حلقه) را در صورت وقوع یک شرط مشخص می‌شکند و با تکرار بعدی در حلقه ادامه می‌دهد.
 
این مثال مقدار 4 را رد می کند:
<?php 
 
  for ($x = 0; $x < 10; $x++) {
    if ($x == 4) {
      continue;
    }
    echo "The number is: $x <br>";
  }

?>
flesh

The number is: 0
The number is: 1
The number is: 2
The number is: 3
The number is: 5
The number is: 6
The number is: 7
The number is: 8
The number is: 9

Break و Continue در حلقه While

همچنین می توانید از حلقه های break و continue در حلقه While استفاده کنید:

مثال Break:

<?php 
 
  $x = 0;
 
  while($x < 10) {
    if ($x == 4) {
      break;
    }
    echo "The number is: $x <br>";
    $x++;
  } 

?> 
flesh

The number is: 0
The number is: 1
The number is: 2
The number is: 3

مثال Continue:

<?php
  
  $x = 0;
 
  while($x < 10) {
    if ($x == 4) {
      $x++;
      continue;
    }
    echo "The number is: $x <br>";
    $x++;
  } 

?>
flesh

The number is: 0
The number is: 1
The number is: 2
The number is: 3
The number is: 5
The number is: 6
The number is: 7
The number is: 8
The number is: 9

۱۸. توابع یا Functions

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

توابع داخلی php

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

توابع تعریف شده توسط کاربر

علاوه بر توابع داخلی PHP، این امکان وجود دارد که توابع خود را ایجاد کنید.
  • تابع بلوکی از دستورات است که می تواند به طور مکرر در یک برنامه استفاده شود.
  • هنگام بارگیری صفحه، یک تابع به طور خودکار اجرا نمی شود.
  • یک تابع با فراخوانی تابع اجرا خواهد شد.
یک اعلان تابع تعریف شده توسط کاربر با کلمه تابع شروع می شود:
 
سینتکس:
function functionName() {
  code to be executed;
}

توجه: نام تابع باید با یک حرف یا زیرخط شروع شود. نام توابع به حروف بزرگ و کوچک حساس نیستند.

نکته: نامی به تابع بدهید که نشان دهنده عملکرد آن باشد!
 
در مثال زیر تابعی به نام “()writeMsg” ایجاد می کنیم. تابع با علامت ( { ) شروع شده و با علامت ( } ) تمام می شود. تابع خروجی “!Hello world“. برای فراخوانی تابع، کافیست نام آن را به همراه پرانتز () به کار ببرید:
 
مثال:
<?php

  function writeMsg() {
    echo "Hello world!";
  }

  writeMsg();

?>
flesh

Hello world!

آرگومان های تابع PHP

اطلاعات را می توان از طریق آرگومان به توابع منتقل کرد. یک آرگومان درست مانند یک متغیر است.
 
آرگومان ها بعد از نام تابع در داخل پرانتز مشخص می شوند. می توانید هر تعداد آرگومان که می خواهید اضافه کنید، فقط آنها را با کاما جدا کنید.
 
در مثال زیر تابع ()familyName یک آرگومان به نام fname$ دارد.
هنگامی فراخوانی تابع ، یک نام (مثلاً Jani) را نیز به عنوان آرگومان به تابع می فرستیم که در داخل تابع استفاده می شود. خروجی تابع شامل چندین نام مختلف و یک نام خانوادگی یکسان می باشد: 
<?php

  function familyName($fname) {
    echo "$fname Refsnes.<br>";
  }

  familyName("Jani");
  familyName("Hege");
  familyName("Stale");
  familyName("Kai Jim");
  familyName("Borge");

?>
flesh

Jani Refsnes.
Hege Refsnes.
Stale Refsnes.
Kai Jim Refsnes.
Borge Refsnes.

مثال زیر یک تابع با دو آرگومان ( fname$ و year$ ) دارد:
<?php

  function familyName($fname, $year) {
    echo "$fname Refsnes. Born in $year <br>";
  }

  familyName("Hege","1975");
  familyName("Stale","1978");
  familyName("Kai Jim","1983");

?>
flesh

Hege Refsnes. Born in 1975
Stale Refsnes. Born in 1978
Kai Jim Refsnes. Born in 1983

PHP یک زبان تایپ آزاد است

همان طور که در مثال بالا دیدید ما مجبور نیستیم به PHP بگوییم که متغیرها از کدام نوع داده هستند.
 
PHP به طور خودکار یک نوع داده را با توجه به مقدار آن متغیر به آن مرتبط می کند. از آنجایی که انواع داده ها به معنای دقیق تنظیم نشده اند، می توانید کارهایی مانند اضافه کردن یک رشته به یک عدد صحیح را بدون ایجاد خطا انجام دهید.
 
در PHP 7 اعلان نوع اضافه شد. با این قابلیت ما می توانیم در هنگام اعلام یک تابع، نوع داده مورد انتظار را مشخص کنیم و با افزودن اعلان سخت گیرانه ( strict declaration ) ، در صورت عدم تطابق نوع داده، یک “Fatal Error” ایجاد می گردد.
در مثال زیر سعی می‌کنیم هم عدد و هم یک رشته را بدون استفاده از strict به تابع ارسال کنیم:
<?php

  function addNumbers( $a, $b) {
    return $a + $b;
  }
  echo addNumbers(5, "5 days"); 
  // since strict is NOT enabled "5 days" is changed to int(5), and 
  // it will return 10

?>

flesh

10

برای تعیین strict باید declare(strict_types=1) را تنظیم کنیم. این باید در اولین خط فایل PHP باشد.
 
      در مثال زیر سعی می کنیم هم یک عدد و هم یک رشته را به تابع بفرستیم، اما در اینجا اعلان دقیق را اضافه کرده ایم:
<?php declare(strict_types=1); // strict requirement

  function addNumbers(int $a, int $b) {
    return $a + $b;
  }
  echo addNumbers(5, "5 days"); 
  // since strict is enabled and "5 days" is not an integer, an 
  // error will be thrown

?>
flesh

PHP Fatal error: Uncaught TypeError: Argument 2 passed to addNumbers() must be of the type integer, string given, called in /home/bWN0Ml/prog.php on line 6 and defined in /home/bWN0Ml/prog.php:3 Stack trace: #0 /home/bWN0Ml/prog.php(6): addNumbers(5, ‘5 days’) #1 {main} thrown in /home/bWN0Ml/prog.php on line 3

نکته: اعلان سختگیرانه ( strict declaration ) اشیاء را مجبور می کند که به روش مورد نظر استفاده شوند.

مقدار آرگومان پیش فرض در PHP

مثال زیر نحوه استفاده از یک پارامتر پیش فرض را نشان می دهد. اگر تابع ()setHeight را بدون آرگومان فراخوانی کنیم، مقدار پیش فرض را به عنوان آرگومان می گیرد:

 

<?php declare(strict_types=1); // strict requirement

  function setHeight(int $minheight = 50) {
      echo "The height is : $minheight <br>";
  }

  setHeight(350);
  setHeight();
  setHeight(135);
  setHeight(80);

?>
flesh

The height is : 350
The height is : 50
The height is : 135
The height is : 80

برگرداندن مقادیر در توابع PHP

برای اینکه یک تابع مقداری را برگرداند، از عبارت return استفاده می شود:
 
مثال:
<?php declare(strict_types=1); // strict requirement ?>
<!DOCTYPE html>
<html>
<body>

<?php
function sum(int $x, int $y) {
  $z = $x + $y;
  return $z;
}

echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
echo "2 + 4 = " . sum(2,4);
?>

</body>
</html>
flesh

5 + 10 = 15
7 + 13 = 20
2 + 4 = 6

اعلان های Return Type

PHP 7 همچنین از Type Declarations برای عبارت return پشتیبانی می کند. همانند اعلان نوع برای آرگومان های تابع، با فعال کردن اعلان سختگیرانه ( strict declaration )، یک “Fatal Error” را روی عدم تطابق نوع return ایجاد می کند.
 
برای اعلام یک نوع برای بازگشت تابع ، هنگام اعلان تابع، یک دونقطه ( : ) و نوع آن را درست قبل از براکت ( } ) اضافه کنید.
 
در مثال زیر نوع بازگشتی ( return type ) تابع را مشخص می کنیم:
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : float {
  return $a + $b;
}
echo addNumbers(1.2, 5.2); 
?>
flesh

6.4

شما می توانید نوع بازگشتی متفاوتی از انواع آرگومان تعیین کنید، اما باید مطمئن شوید که نوع بازگشتی صحیح است:
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : int {
  return (int)($a + $b);
}
echo addNumbers(1.2, 5.2); 
?>
flesh

6

ارسال آرگومان ها با مرجع

در PHP، آرگومان ها معمولا با مقدار ارسال می شوند، به این معنی که یک کپی از مقدار در تابع استفاده می شود و متغیری که به تابع داده شده است قابل تغییر نیست.
 
هنگامی که یک آرگومان تابع با مرجع ( Refrence ) ارسال می شود، تغییرات در آرگومان متغیری را که ارسال شده است نیز تغییر می دهد. برای تبدیل یک آرگومان تابع به مرجع، از عملگر & استفاده می شود:
مثال:
برای به روز رسانی یک متغیر از ارسال آرگومان با مرجع استفاده کنید:

7

flesh
<?php
function add_five(&$value) {
  $value += 5;
}

$num = 2;
add_five($num);
echo $num;
?>
<?php
function add_five(&$value) {
  $value += 5;
}

$num = 2;
add_five($num);
echo $num;
?>
flesh

7

۱۹. آرایه ها

برای ذخیره چندین مقدار را در یک متغیر از آرایه استفاده می شود.
 
مثال:
<?php

  $cars = array("Volvo", "BMW", "Toyota"); 
  echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";

?>
flesh

I like Volvo, BMW and Toyota.

آرایه چیست؟

آرایه یک متغیر خاص است که می تواند بیش از یک مقدار را در یک زمان نگه دارد.
 
اگر فهرستی دارید ( مثلاً فهرستی از نام خودروها )، ذخیره خودروها در متغیرهای منفرد می‌تواند به شکل زیر باشد:
$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";
حالا اگر بخواهید ماشین‌ها را با یک حلقه پیمایش کنید و یک مورد خاص پیدا کنید، چه؟ و اگر شما بجای 3 ماشین، 300 ماشین داشتید چطور؟
 
راه حل ایجاد یک آرایه است!
 
یک آرایه می تواند مقادیر زیادی را تحت یک نام نگه دارد و شما می توانید با مراجعه به یک عدد شاخص به مقادیر آن دسترسی پیدا کنید.

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

در PHP از تابع ()array برای ایجاد یک آرایه استفاده می شود:
array();
در PHP سه نوع آرایه وجود دارد:
  • آرایه های نمایه شده  ( Indexed Arrays ) – آرایه هایی با شاخص عددی
  • آرایه های انجمنی      ( Associative arrays ) – آرایه هایی با کلیدهای نامگذاری شده
  • آرایه های چند بعدی  ( Multidimensional arrays ) – آرایه هایی حاوی یک یا چند آرایه

دریافت طول آرایه با تابع ()count

تابع ()count برای برگرداندن طول ( تعداد عناصر ) یک آرایه استفاده می شود:
<?php

  $cars = array("Volvo", "BMW", 
  "Toyota");
  echo count($cars);

?>
flesh

3

آرایه های نمایه شده ( Indexed Arrays )

دو راه برای ایجاد آرایه های نمایه شده وجود دارد:
شاخص را می توان به طور خودکار اختصاص داد (شاخص همیشه از 0 شروع می شود)، مانند زیر:
$cars = array("Volvo", "BMW", "Toyota");
یا ایندکس را می توان به صورت دستی اختصاص داد:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
مثال زیر یک آرایه نمایه شده به نام cars$ ایجاد می کند، سه عنصر را به آن اختصاص می دهد و سپس متنی حاوی مقادیر آرایه را چاپ می کند:
<?php

  $cars = array("Volvo", "BMW", "Toyota"); 
  echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";

?>
flesh

I like Volvo, BMW and Toyota.

اجرای حلقه از طریق یک آرایه نمایه شده

برای حلقه زدن و چاپ تمام مقادیر یک آرایه نمایه شده، می توانید از یک حلقه for استفاده کنید.
مثال:
<?php

  $cars = array("Volvo", "BMW", "Toyota");
  $arrlength = count($cars);

  for($x = 0; $x < $arrlength; $x++) {
    echo $cars[$x];
    echo "<br>";
  }

?>
flesh

Volvo
BMW
Toyota

آرایه های انجمنی ( Associative arrays )

آرایه های انجمنی آرایه هایی هستند که از کلیدهای نامگذاری شده ای استفاده می کنند که شما به آنها اختصاص می دهید.
 
دو راه برای ایجاد یک آرایه انجمنی وجود دارد:
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

یا

$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";
سپس کلیدهای نامگذاری شده را می توان در یک اسکریپت استفاده کرد:
 
مثال:
<?php

  $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
  echo "Peter is " . $age['Peter'] . " years old.";

?>
flesh

Peter is 35 years old.

اجرای حلقه از طریق یک آرایه انجمنی

برای حلقه زدن و چاپ تمام مقادیر یک آرایه انجمنی، می توانید از یک حلقه foreach مانند زیر استفاده کنید:
<?php

  $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

  foreach($age as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
  }

?>
flesh

Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

آرایه های چند بعدی ( Multidimensional Arrays )

در قسمتهای قبل، آرایه هایی را توضیح دادیم که یک لیست واحد از جفت کلید/مقدار هستند.
 
با این حال، گاهی اوقات نیاز داریم که مقادیری را با بیش از یک کلید ذخیره کنیم. آرایه های چند بعدی برای این منظور استفاده می شوند.
 
آرایه چند بعدی آرایه ای است که شامل یک یا چند آرایه است.
 
PHP از آرایه های چند بعدی با عمق دو، سه، چهار، پنج یا بیشتر پشتیبانی می کند. با این حال، مدیریت آرایه‌هایی با عمق بیش از سه سطح برای اکثر افراد دشوار است.
       نکته: بعد یک آرایه نشان دهنده تعداد شاخص هایی است که برای انتخاب یک عنصر نیاز دارید.
  • برای یک آرایه دو بعدی برای انتخاب یک عنصر به دو شاخص نیاز دارید
  • برای یک آرایه سه بعدی برای انتخاب یک عنصر به سه شاخص نیاز دارید

آرایه های دو بعدی

آرایه دو بعدی آرایه ای از آرایه ها است (آرایه سه بعدی آرایه ای از آرایه ها است).
 
ابتدا به جدول زیر توجه کنید:
نام موجودی فروخته شده
Volvo 22 18
BMW 15 13
Saab 5 2
Land Rover 17 15
ما می توانیم داده های جدول بالا را در یک آرایه دو بعدی ذخیره کنیم، مانند:
$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
در این حالت آرایه دو بعدی cars$ شامل چهار آرایه است و دو شاخص دارد: ردیف و ستون.
برای دسترسی به عناصر آرایه cars$ باید به دو شاخص (ردیف و ستون) اشاره کنیم:
<?php

$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
  
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";

?>
flesh

Volvo: In stock: 22, sold: 18.
BMW: In stock: 15, sold: 13.
Saab: In stock: 5, sold: 2.
Land Rover: In stock: 17, sold: 15.

همچنین می‌توانیم یک حلقه for در حلقه for دیگری قرار دهیم تا عناصر آرایه cars$ را بدست آوریم ( باید به ردیف و ستون اشاره کنیم )

 

<?php

$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
    
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Row number $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}

?>
flesh
   Row number 0
     • Volvo
     • 22
     • 18
   Row number 1
     • BMW
     • 15
     • 13
   Row number 2
     • Saab
     • 5
     • 2
   Row number 3
     • Land Rover
     • 17
     • 15

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

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

توابع مرتب سازی برای آرایه ها

در این قسمت، توابع مرتب‌سازی آرایه PHP زیر را مرور می‌کنیم:
  • ()sort     آرایه ها را به ترتیب صعودی مرتب می کند
  • ()rsort    آرایه ها را به ترتیب نزولی مرتب می کند
  • ()asort    آرایه های انجمنی را بر اساس مقدار به ترتیب صعودی مرتب می کند
  • ()ksort    آرایه های انجمنی را طبق کلید به ترتیب صعودی مرتب می کند
  • ()arsort   آرایه های انجمنی را بر اساس مقدار به ترتیب نزولی مرتب می کند
  • ()krsort   آرایه های انجمنی را طبق کلید به ترتیب نزولی مرتب می کند

()sort مرتب سازی آرایه به ترتیب صعودی

مثال زیر عناصر آرایه cars$ را به ترتیب حروف الفبا صعودی مرتب می کند:
<?php

$cars = array("Volvo", "BMW", "Toyota");
sort($cars);

$clength = count($cars);
for($x = 0; $x < $clength; $x++) {
  echo $cars[$x];
  echo "<br>";
}

?>
flesh

BMW
Toyota
Volvo

مثال زیر عناصر آرایه numbers$ را به ترتیب عددی صعودی مرتب می‌کند:
<?php

$numbers = array(4, 6, 2, 22, 11);
sort($numbers);

$arrlength = count($numbers);
for($x = 0; $x < $arrlength; $x++) {
  echo $numbers[$x];
  echo "<br>";
}

?>
flesh

2
4
6
11
22

()rsort مرتب سازی آرایه به ترتیب نزولی

مثال زیر عناصر آرایه cars$ را به ترتیب حروف الفبا نزولی مرتب می کند:
<?php

$cars = array("Volvo", "BMW", "Toyota");
rsort($cars);

$clength = count($cars);
for($x = 0; $x < $clength; $x++) {
  echo $cars[$x];
  echo "<br>";
}

?>
flesh

Volvo
Toyota
BMW

مثال زیر عناصر آرایه numbers$ را به ترتیب عددی نزولی مرتب می‌کند:
<?php

$numbers = array(4, 6, 2, 22, 11);
rsort($numbers);

$arrlength = count($numbers);
for($x = 0; $x < $arrlength; $x++) {
  echo $numbers[$x];
  echo "<br>";
}

?>
flesh

22
11
6
4
2

()asort مرتب سازی آرایه (ترتیب صعودی)، بر اساس مقدار

مثال زیر یک آرایه انجمنی را بر اساس مقدار به ترتیب صعودی مرتب می کند:
<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);

foreach($age as $x => $x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}

?>
flesh

Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

()ksort مرتب سازی آرایه (ترتیب صعودی)، بر اساس کلید

مثال زیر یک آرایه انجمنی را بر اساس کلید به ترتیب صعودی مرتب می کند:
<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
ksort($age);

foreach($age as $x => $x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}

?>
flesh

Key=Ben, Value=37
Key=Joe, Value=43
Key=Peter, Value=35

()arsort مرتب سازی آرایه (ترتیب نزولی)، بر اساس مقدار

مثال زیر یک آرایه انجمنی را بر اساس مقدار به ترتیب نزولی مرتب می کند:
<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
arsort($age);

foreach($age as $x => $x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}

?>
flesh

Key=Joe, Value=43
Key=Ben, Value=37
Key=Peter, Value=35

()krsort مرتب سازی آرایه (ترتیب نزولی)، بر اساس کلید

مثال زیر یک آرایه انجمنی را بر اساس کلید به ترتیب نزولی مرتب می کند:
<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
krsort($age);

foreach($age as $x => $x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}

?>
flesh

Key=Peter, Value=35
Key=Joe, Value=43
Key=Ben, Value=37

منبع:

w3schools.com