آموزش PHP

PHP  چیست ؟

PHP در ابتدا، مخفف واژگان Personal Home Page بود که در سال 1994 توسط Rasmus Lerdorf نوشته شد. PHP یک زبان برنامه نویسی متن باز است که امروزه به صورت گسترده برای توسعه طراحی وب استفاده می شود. پی اچ پی روی سرور اجرا می شود و به صورت رایگان در اختیار عموم قرار دارد.

PHP یک زبان محبوب و قدرتمند است، به همین دلیل :

هسته بزرگترین سیستم تولید محتوای جهان (وردپرس) با زبان برنامه نویسی PHP توسعه پیدا کرده است.

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

PHP چه کارهایی می تواند انجام دهد ؟

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

چرا PHP را یاد بگیریم ؟

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

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

 

مسیر یادگیری PHP

بعضی از علاقه‎مندان در ابتدای شروع کار خود، مسیر یادگیری خودشان را گم می‌کنند که ما قرار است بهترین مسیر یادگیری PHP را برای شما عزیزان مشخص کنیم،

سرفصل ها

معماری وب و مبانی پایه و پروتکل های وب

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

PHP چه نوع زبانی است؟

اولین چیزی که هر PHP کاری قرار است بداند این است که PHP واقعا چه زبانی است و چه کاربردهایی دارد و دقیقا چه کارهایی می‌توان با آن انجام داد؟

انواع متغیر ها و داده ها در زبان PHP

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

عملگرها در زبان PHP

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

ساختارهای شرطی در زبان PHP

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

ساختارهای تکرار و حلقه ها

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

PHP چه نوع زبانی است؟

حوضه وب به طور کلی به دو بخش تقسیم می‌شود، بخش اول فرانت‌اند (Front-end) نام دارد که با تکنولوژی‌های موجود در آن می‌توان ظاهر وب‌سایت را پیاده‌سازی کرد، و دقیقا چیزی است که کاربر از یک وب‌سایت می‌بیند.

بخش دوم که بک‌اند (Back-end) نام دارد بخشی است که کاربر نمی‌تواند آن را ببیند ولی می‌تواند آن را حس کند مانند روح در بدن که به یک انسان جان می‌دهد، PHP هم همین کار را انجام می‌دهد و باعث می‌شود یک وب‌سایت از حالت ایستا به پویا تبدیل شود.

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

پروژه‌های انجام شده با PHP

اگر بخواهیم نگاهی بندازیم به اینکه PHP در چه پروژه‌هایی استفاده شده است و به اصطلاح بدانیم چند مرده حلاج است باید یک نگاه به پروژه‌ی انجام شده با آن بندازیم، از معروف‌ترین و بزرگ‌ترین پروژه‌‌ها در خارج از کشور می‌توان به فیس‌بوک (Facebook)، گوگل (Google)، ویکی‌پدیا (Wikipedia)، وردپرس (Wordpress) اشاره کرد و داخل ایران می‌توان به دیجی‌کالا (digikala.com)، اسنپ (snapp.ir)، نت برگ (netbarg.com)، تخفیفان (takhfifan.com) و ... اشاره کرد.

نوشتن اولین برنامه در PHP

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

<?php
echo "Hello World!";

تکه کد بالا پیغام Hello World را چاپ می‌کند که لازم است کد را به صورت دقیق برای شما توضیح دهیم.

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

<?php

?>

تگ بالا، تگ باز و بسته PHP است که در بین آن کدهای PHP خود را قرار می‌دهیم، نکته‌ی این تگ این است که اگر از کدهای PHP در سند HTML درحال استفاده هستیم حتما باید تگ بسته‌ی (<?) آن را قرار دهیم تا با تگ های HTML تداخلی ایجاد نکند در غیر این صورت اگر در حال کد زدن در سند PHP هستید لازم به بستن آن نیست.

در ادامه توضیح کدی که بالاتر نوشتیم به توضیح دستور echo می‌پردازیم، echo وظیفه‌ی چاپ رشته یا عدد را دارد که می‌توان به شکل زیر نوشت.

<?php 
echo "Hello World!";

که اگر توجه کنید بعد از echo متنی بین دو " (دابل کوتیشن) قرار داده شده است، در PHP برای اینکه رشته‌‌ها را داشته باشیم باید بین دو " (دابل کوتیشن) یا ' (تک کوتیشن) قرار بدهیم.

در انتهای کد بالا ; (semicolon)  وجود دارد که باید در انتهای کدهای خودمان در PHP قرار دهیم که اگر این کار صورت نگیرد برنامه‌ی ما دچار خطا می‌شود.

و در نهایت خروجی کد بالا به شکل زیر است.
Hello World!
 

متغیر چیست؟

متغیرها را می‌توان یک ظرف تصور کرد که می‌توانیم آن را با یک مقداری پر کنیم و بستگی به بزرگ یا کوچک بودن آن ظرف مقدارهای مختلفی درون آن قرار می‌دهیم.

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

قوانین و مقررات تعریف متغیر در PHP:

اولین قانونی که باید در تعریف متغیر رعایت کنیم علامت $ (دالرساین) می‌باشد با این کاراکتر ما در PHP متغیر تعریف می‌کنیم.

قانون دوم در نام گذاری متغیرها می‌باشد که باید به یک سری نکات توجه کنید.
  1. نمی‌توان نام متغیر را با عدد شروع کرد.
  2.  در نام گذاری متغیرها می‌توان با حروف انگلیسی یا _ (underscore) شروع کرد.
  3. PHP به حروف کوچک و بزرگ حساس است به این معنا که متغیر با نام a و A کاملا با یکدیگر متفاوت هستند.
  4. بین کلمات نمی‌توان فاصله گذاشت برای مشخص کردن کلمات در نام گذاری می‌توان از _ (underscore) و یا می‌توان از اصول نام گذاری (Camel Notation) یا به اصطلاح نماد شتر استفاده کرد، به این صورت است که شما حرف کلمه‌ی اول متغیر را کوچک می‌نویسید و کلمات بعدی را با حرف اول بزرگ شروع می‌کنید، به مثال زیر دقت کنید.
$thisIsTestVar

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

مقداردهی به متغیرها:

برای مقداردهی به متغیرها ما باید از علامت = (مساوی) استفاده کنیم و در جلوی مساوی مقدار را به متغیر بدهیم، به مثال زیر توجه کنید.

<?php 
$number = 2;

همان‌طور که در بالا آمده است با علامت $ و نام، شروع به تعریف متغیر کرده‌ایم و با علامت = (مساوی) به متغیر عدد 2 را مقداردهی کرده‌ایم.

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

نکته‌ی دوم این است که در متغیرها مقدار ورودی متغیر نوع آن را مشخص می‌کند، در مثال بالا که ما عدد به متغیر number داده‌ایم متغییر number نوعش از نوع عددی یا integer تنظیم شده است اگر به آن رشته می‌دادیم نوعش به نوع رشته‌ای یا String در می‌آمد.

انواع متغیر در PHP:

ما در PHP و در زبان‌های برنامه نویسی دیگر متغیرهایی از نوع رشته (String)، عدد (Integer)، آرایه (Array)، بولین (Boolean) داریم که در جایگاه‌های خودشان بسیار پرکاربرد هستند، به بررسی تمامی این متغیرها می‌پردازیم.

متغیرهای رشته ای یا String

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

همان‌طور که گفته شد ما نوع متغیر را در زمان مقداردهی مشخص می‌کنیم، مقدار رشته یا String در میان دو " (دابل کوتیشن) یا دو ' (تک کوتیشن) قرار می‌گیرد که تفاوت‌هایی باهم دارند.

<?php 
$name = "7learn";

در کد بالا یک نام را درون دابل کوتیشن قرار داده‌ایم و آن را به عنوان مقدار به متغیر name داده‌ایم.

تفاوت بین " (دابل کوتیشن) و ' (تک کوتیشن) این است که شما می‌توانید در میان " (دابل کوتیشن) متغیر خود را بیاورید تا مقدار درون متغیر در رشته قرار بگیرد ولی در ' (تک کوتیشن) مقدار متغیر درون رشته قرار نمی‌گیرد بلکه نام متغیر درون آن قرار می‌گیرید.

یکی دیگر از تفاوت‎‌های بین این دو این است که شما در " (دابل کوتیشن) می‌توانید از n\ و کاراکترهای شبیه به این استفاده نمایید، که باعث می‌شود به خط بعدی برویم، اما در ' (تک کوتیشن) این کاراکترها کار نمی‌کنند.

<?php 
$name = "7laern"; 
echo "I love $name";
طبق صحبت‌های که در بالا گفتیم خروجی این کد باید این‌گونه باشد.
I love 7learn
اما اگر ما از ' (تک کوتیشن) استفاده کنیم:
<?php 
$name = "7learn"; 
echo 'I love $name';
I love $name

متغیرهای عددی یا Integer

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

<?php 
$age = 32;

در کد بالا ما متغیری با اسم age داریم که سن را درون خود ذخیره‌سازی می‌کند و در مقابل آن با عملگر مساوی عدد 32 را برای متغیر در نظر گرفته‌ایم.

نکته‌ای که باید توجه کنید این است که شما در تعریف متغیرهای عددی، مقدار را بین ' (تک کوتیشن) یا " (دابل کوتیشن) قرار نمی‌دهید و اگر چنین کاری را انجام دهید آن متغیر به نوع رشته تبدیل می‌شود و دیگر نمی‌توان بر روی آن‌ها عملیات ریاضی را انجام داد.

اعداد اعشار

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

<?php 
$math = 18.5;
مثال بالا کاملا گویاست که چگونه یک متغیر از نوع اعشار را ایجاد کنیم.

مثالی از متغیرهای عددی

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

<?php 
$math = 18.5; 
$chemistry = 17; 
$physics = 15;
در بالا ما چند متغیر عددی تعریف کردیم که برای مثال هر کدام نمره‌ی درس‌های یک دانش آموز را دارد و ما می‌خواهیم میانگین این نمرات را به دست بیاوریم .
<?php 
$math = 18.5; 
$chemistry = 17; 
$physics = 15; 
$avg = ($math + $chemistry + $physics) / 3; 

echo $avg;
16.833333333333

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

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

<?php 
$math = 18.5; 
$chemistry = 17; 
$physics = 15; 
$avg = ($math + $chemistry + $physics) / 3; 

echo round($avg, 2);
16.83
به تابع round می‌توانید عددی که اعشار دارد را بدهید و در ورودی دوم آن تعداد ارقام اعشار آن را می‌دهید که در این جا دو رقم اعشار است. اگر به طور پیش فرض به آن چیزی ندهید، تابع با توجه به رقم اعشار آن را به سمت عدد بالاتر یا پایین تر گرد می‌کند. برای مثال.
<?php 
$math = 18.5; 
$chemistry = 17; 
$physics = 15; 
$avg = ($math + $chemistry + $physics) / 3; 

echo round($avg);
17

در اینجا خروجی عدد 17 شده است چون رقم اعشار عدد بزرگی است و به سمت بالاتر نزدیک است. نکته‌ای که باید اینجا توجه کنید این است که اگر عدد اعشار شما بالاتر از نیم یا 5 باشد به سمت بالا و اگر کم‌تر از نیم یا 5 باشد به سمت پایین گرد می‌شود. در ادامه درباره‌ی عملگرها به طور کامل صحبت می‌کنیم.

متغیرهای آرایه ای یا Array

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

آرایه‌ها در کل می‌توانند مجموعه‌ای از داده‌ها را در خود ذخیره سازی کنند، اینکه می‌گوییم مجموعه‌ای از داده‌ها منظورمان این است که تعداد زیادی مقدار از هر نوع آن می‌توان ذخیره سازی کرد. برای مثال ما در متغیرهای عددی یا رشته یاد گرفته‌ایم که فقط در آن‌ها می‌توانیم اعداد یا رشته ذخیره سازی کنیم اما در آرایه‌ها این‌گونه نیست و شما می‌توانید از هر نوع داده‌ای درون یک یا چند آرایه داشته باشید.

در PHP ما دو نوع آرایه داریم که نوع اول آن ایندکس‌های پیش‌فرض دارند که به آن‌ها Indexed array گفته می‌شود و نوع دوم آن، ما خودمان به صورت دستی ایندکس‌های آن را مشخص می‌کنیم که به آن‌ها Associative array گفته می‌شود که به معنی آرایه‌های انجمی می‌باشد.

ساخت آرایه از نوع Indexed array

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

<?php 
$arr = ['7learn','google',24,76,'amazon'];

روش اول قرار دادن آکولاد [ ] باز و بسته و قرار دادن مقادیر بین آن‌ها است همان‌طور که می‌بینید، مقادیر از نوع عدد و رشته وارد کرده‌ایم. برای مقداردهی هنگام تعریف متغیر حتما باید مقادیر با کاما ( , ) از یکدیگر جدا شوند وگرنه دچار خطا می‌شویم.

روش دوم برای تعریف آرایه استفاده از تابع array است، به مثال پایین توجه کنید.
<?php 
$arr = array('7learn','google',24,76,'amazon');

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

روش فراخوانی آرایه‌های indexed array

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

<?php 
$arr = array('7learn','google',24,76,'amazon'); 
print_r($arr);
Array ( [0] => 7learn [1] => google [2] => 24 [3] => 76 [4] => amazon )

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

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

<?php 
$arr = array('7learn','google',24,76,'amazon'); 
var_dump($arr);
array(5) { [0]=> string(6) "7learn" [1]=> string(6) "google" [2]=> int(24) [3]=> int(76) [4]=> string(6) "amazon" }

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

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

<?php 
$arr = array('7learn','google',24,76,'amazon'); 
echo $arr[0];
7learn

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

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

$arr[1];
مانند مثال بالا که ما ایندکس یک را از آرایه arr فراخوانی کرده‌ایم. توجه داشته باشید که اگر ایندکس وارد شده خارج بازه‌ی آرایه باشد دچار خطا می‌شویم، برای مثال آرایه‌ی پایین 5 عضو دارد و 4 ایندکس (ایندکس‌ها از 0 شروع می‌شوند) که اگر ما ایندکس 10 را فراخوانی کنیم با این که وجود ندارد به خطای زیر مواجه می‌شویم.
<?php 
$arr = array('7learn','google',24,76,'amazon'); 
echo $arr[10];
Notice: Undefined offset: 10 in C:\xampp\htdocs\7learn\index.php on line 5

خطای بالا گفته است که چنین ایندکسی وجود ندارد و این خطا در این مسیر و در خط 5 رخ داده است.

ساخت آرایه از نوع Associative array

ساخت آرایه‌های Associative یا انجمنی بسیار آسان است فقط کافیست ایندکس آن را به صورت دلخواه ایجاد کنیم، به مثال پایین توجه کنید.

<?php 
$arr = array('name' => '7learn', 'location' => 'tehran', 'age' => 14);

در آرایه‌ی بالا ما اطلاعات یک فرد را در آرایه ذخیره کرده‌ایم، برای اینکه بتوانیم خودمان ایندکس یک آرایه را تعریف کنیم اگر ایندکس مدنظر ما یک رشته است باید آن را در میان یک ' ( تک کوتیشن) یا " ( دابل کوتیشن ) قرار دهیم و اگر عدد است که به راحتی آن عدد را می‌نویسیم و با علامت <= (مساوی و بزرگتری) به مقدار آن اشاره می‌کنیم و مقدار را جلوی آن قرار می‌دهیم که می‌تواند عدد، رشته، آرایه باشد و برای تعریف ایندکس بعدی از کاما ( , ) استفاده می‌کنیم.

اگر با تابع print_r آرایه را چاپ کنیم تمامی ایندکس‌ها با مقادیرشان که تعریف کرده‌ایم قابل مشاهده هستند.
<?php 
$arr = array('name' => '7learn', 'location' => 'tehran', 'age' => 14); 
print_r($arr);
Array ( [name] => 7lean [location] => tehran [age] => 14 )

روش فراخوانی آرایه‌ های انجمنی یا Associative array

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

<?php

$arr = array('name' => '7learn', 'location' => 'tehran', 'age' => 14);
echo $arr['name'];
7learn

آرایه‌های ایندکسی و انجمنی در کنار هم

شاید برایتان سوال باشد که آیا می‌توان این دو آرایه را با یکدیگر داشت؟ باید به شما بگوییم بله، ولی شاید دوباره از خود سوال بپرسید که ایندکس گذاری‌ها چگونه انجام می‌شود؟

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

<?php 
$arr = array('name' => '7learn', 'location' => 'tehran', 'age' => 14, 'amazon', 43, 'google'); 
print_r($arr);
Array ( [name] => 7learn [location] => tehran [age] => 14 [0] => amazon [1] => 43 [2] => google )
در مثال بالا ما در آخر آرایه سه مقدار amazon، 43، google را بدون ایندکس وارد کرده‌ایم و همان‌طور که قابل مشاهده است از صفر ایندکس گذاری شده‌اند.

عملگرها در PHP

عملگرها در متغیرها، شروط، حلقه‌ها بسیار استفاده می‌شوند که شناختن و نحوه‌ی کار کردن آن‌ها ضروری است، اکثر شماها با عملگرهای ریاضی مثل جمع ( + )، تفریق ( - )، ضرب ( * )، تقسیم ( / ) آشنا هستید، این همه‌ی عملگرها در PHP نیست، در ادامه به همه‌ی آن‌ها می‌پردازیم.

عملگرهای حسابی

با استفاده از عملگرهای حسابی یا محاسباتی می‌توان محاسبات ریاضی را انجام داد.
عملگرهای محاسبه‌ای در PHP

عملگرهای محاسبه‌ای

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

<?php 
$x = 2; $y = 5; 
echo $x % $y;
2

و عملگر ** عدد سمت چپ عملگر را به توان عدد سمت راست عملگر می‌رساند، به مثال زیر توجه کنید.

<?php 
$x = 2; 
$y = 5; 
echo $x ** $y;
32

عملگرهای Assignment

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

عملگرهای انتساب

انتساب به این معنا که مقدار درون متغیر سمت راست را درون متغیر سمت چپ می‌ریزیم، به مثال اول که در عکس بالا آمده است توجه کنید که ما مقداری که درون متغیر y وجود دارد را درون x می‌ریزیم.

در مثال‌های بعدی عکس بالا کاملا گویاست که Assignment کردن به صورت کوتاه شده درآمده است، به مثال دوم نگاه کنید که می‌خواهیم مقدار درون متغیر y را با x جمع کنیم و آن را درون خود x بریزیم، شکل اول این‌گونه ( x = x + y ) است اما شکل جمع شده‌ی آن به صورت ( x += y ) در آمده است که اینجا علامت + به پشت علامت = آمده است و باعث شده است که x دو بار تکرار نشود.

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

عملگرهای Comparison یا مقایسه‌ای

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

عملگرهای مقایسه‌ای در PHP

عملگرهای مقایسه‌ای

با عملگر == (مساوی مساوی) می‌توان بررسی کرد که آیا مقدار سمت راست متغیر با مقدار سمت چپ آن برابر است؟

با عملگر === (سه مساوی) می‌توان بررسی کرد که آیا مقدار و نوع متغیر سمت راست با مقدار سمت چپ آن برابر است؟

با عملگرهای =! و <> می‌توان نابرابر بودن مقادیر  سمت راست و چپ را مقایسه کرد.

با عملگر ==! می‌توان نابرابری و نوع متغیر را مقایسه کرد.

با عملگر < می‌توان بزرگ‌تر بودن مقدار سمت (تا یکی کمتر از خودش) چپ عملگر را با مقدار سمت راست آن بررسی کرد.

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

با عملگرهای =< می‌توان بزرگ‌تر مساوی (تا خود آن عدد) و  => کوچک‌تر مساوی (تا خود آن عدد)  را مقایسه کرد.

و در نهایت عملگر <=> که به آن کشتی فضایی می‌گویند و در PHP 7 اضافه شده است و سه خروجی 1، 0، 1- دارد، اگر عدد سمت راست آن از سمت چپ بزرگ‌تر باشد به عنوان خروجی 1 را برمی‌گرداند، اگر مساوی باشد 0 و اگر مقدار سمت راست بزرگ‌تر از چپ باشد 1- را برمی‌گرداند.

عملگرهای افزایشی و کاهشی

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

عملگرهای افزایشی و کاهشی در PHP

عملگرهای افزایشی و کاهشی

عملگرهای افزایشی و یا کاهشی باعث می‌شوند که متغیر یک واحد اضافه یا کم شود اما تفاوت‌هایی بین این دو است که باید با یکدیگر مقایسه کنیم.
<?php

$x = 1;
$a = ++$x;

echo $a;
2

اولین مثال از عملگرهای افزایشی که در بالا آمده است، متغیر x مقدار 1 را در خودش دارد و متغیر x را با عملگر pre-increment داخل متغیر a قرار داده‌ایم، حالا اگر از متغیر a که حاوی اطلاعات متغیر x است، خروجی بگیریم، مشاهده می‌کنیم، که مقدار x یک واحد افزایش یافته است.

اما یک چیز جالب‌تر درباره‌ی عملگرهای post-increment یا post-decrement که با هم یک مثال می‌بینیم.

<?php 
$x = 1; 
$a = $x++; 
echo $a;
1
حال اگر این دو عملگر جمع ( + ) را بعد از متغیر x قرار دهیم شاهد این هستیم که خروجی 1 خواهد بود و مقداری به آن اضافه نشده است.
به طور کلی عملگرهای pre-increment یا pre-decrement یک واحد افزایش می‌یابند و بعد به عنوان خروجی مقدار افزایش شده را می‌دهند اما post-increment یا post-decrement یک واحد افزایش می‌یابند اما به عنوان خروجی مقدار قبلی خود را می‌دهند.

عملگرهای رشته‌ای

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

عملگرهای رشته‌ای

اولین عملگر که به عملگر Concatenation یا الصاق مشهور است و با یک نقطه یا dot شناخته می‌شود که می‌توان دو یا چندین رشته را به هم متصل کرد، برای مثال:

<?php

$part1 = "You are reading";
$part2 = "PHP article";

echo $part1 . " " . $part2;
You are reading PHP article

همان‌طور که در بالا قابل مشاهده است متغیرهای part1 و part2 که حاوی رشته هستند، را با هم با نقطه (dot) به هم وصل کرده‌ایم و یک فاصله هم بین آن‌ها داده‌ایم که به یکدیگر نچسبند.

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

<?php
$part1 = "Seven";
$part2 = "Learn";

$part1 .= $part2;
echo $part1;
SevenLearn

عملگر بالا دقیقا رشته‌ای که در متغیر part1 ذخیره‌سازی شده است را با متغیر part2 می‌چسباند و آن را درون متغیر part1 ذخیره‌سازی می‌کند.

عملگرهای منطقی

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

عملگرهای منطقی در PHP

عملگرهای منطقی

 

در عملگرهای منطقی یک مقدار در سمت راست و یک مقدار در سمت چپ قرار می‌گیرد و مقایسه می‌شوند.

عملگر and که به معنای (و) است باید دو طرف آن true باشد، اما این به چه معناست؟ در ادامه باهم یک مثال از and و ترکیبی از عملگرهای مقایسه‌ای می‌زنیم.

مثال اول:
<?php
$a = 2;
$b = 5;
echo $a > 3 and $b == 2;

در بالا ما دو متغیر به اسم a و b تعریف کرده‌ایم و آن را به مقایسه انداخته‌ایم، در سمت چپ عملگر and ما بررسی می‌کنیم که آیا مقداری که درون a وجود دارد بزرگ تر از 3 است؟ و در سمت راست عملگر and متغیر b را مقایسه می‌کنیم که آیا مقدار درون b برابر با 2 است؟

همان‌طور که می‌دانید جواب مقایسه سمت چپ and برابر با false است چون مقدار درون a بزرگ‌تر از 3 نیست و جواب مقایسه سمت راست and نیز برابر با false است چون مقدار درون b برابر با 2 نیست و از آن جایی که ما می‌دانیم مقدار دو طرف and باید true باشد تا آن مقایسه درست دربیاید، جواب این مقایسه برابر با false یا 0 است.

مثال دوم:
<?php
$a = 2;
$b = 5;

echo $a > 1 and $b == 2;

این دفعه ما شرط متغیر a را بزرگ‌تر از 1 قرار داده‌ایم که true می‌شود و شرط متغیر b به شکل قبلی وجود دارد حال اگه خروجی را ببینیم جواب false یا 0 خواهد بود، چرا؟ همان‌طور که در قبل هم اشاره شد دو طرف and باید true باشد و از آن جایی که سمت راست and درست یا true است و  سمت چپ and غلط یا fasle است پس خروجی نهایی false خواهد بود.

مثال سوم:
<?php 
$a = 2; 
$b = 5; 

echo $a > 1 and $b == 5;
در نهایت ما شرط دو طرف and را true کرده‌ایم و جواب نهایی true است.

اپراتورهای انتساب شرطی

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

اپراتورهای انتساب شرطی در PHP

اپراتورهای انتساب شرطی

اولین نوع اپراتوهای انتساب شرطی که به شرط‌های سه‌تایی یا سه‌قلو معروف هستند، می‌توان با آن‌ها شرط‌های تک خطی نوشت، اما منظور از تک خطی چست؟

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

<?php

$a = 5;

if($a % 2 == 0){
    echo "even";
}else{
    echo "odd";
}
odd
در بالا ساختاری شرطی را آورده‌ایم که هنوز به آن نرسیده‌ایم اما برای اینکه ابهامی به وجود نیاید ما این کد را توضیح می‌دهیم.

در اول کد یک متغیر به اسم a تعریف کرده‌ایم که مقدار 5 را درون خودش دارد، در ادامه ما یک شرط داریم، برای تعریف شرط باید ابتدا از ()if استفاده کنیم و شرط‌مان را درون پرانتز قرار بدهیم که در کد ما شرط ما این است که آیا مقدار درون a زوج است یا فرد، اگر زوج بود چاپ می‌کند even (زوج) اگر زوج نبود به بلاک بعدی یعنی else می‌رود که به معنای "در غیر این صورت" است و odd (فرد) را چاپ می‌کند.

اما راه ساده‌تری برای بررسی کردن این شرط وجود دارد، به مثال زیر دقت کنید.
<?php

$a = 5;

($a % 2 == 0) ? echo "even" : echo "odd";
odd

شاید اولین چیزی که نظر شما را جلب می‌کند کوتاهی ساختار این شرط است، در پرانتز ما شرط خود را آورده‌ایم اگر شرط ما true یا درست در بیاید به کد بعد از علامت ? مراجعه می‌کند و آن را اجرا می‌کند و اگر شرط false یا نادرست دربیاید به کد بعد از علامت : رجوع می‌کند که در مثال بالا شرط false یا نادرست درآمده است و به قسمت بعد از علامت : مراجعه کرده و آن را اجرا کرده، که جواب odd یا فرد است.

دومین نوع از اپراتورهای انتساب شرطی که در نسخه 7 PHP اضافه شده است و ساختار زیر را دارد.
<?php

$x = expr1 ?? expr2;

در سمت چپ علامت ?? شما مقداری را قرار می‌دهید که انتظارش را دارید و در سمت راست، شما مقداری را قرار می‌دهید که اگر مقدار سمت چپ false شد مقدار سمت راست جای آن را بگیرد، برای درک بیشتر این مسئله به مثال زیر دقت کنید.

<?php

$num1 = 3;
$result = $num1 > 2 ?? 0;
echo $result;
3

در بالا ما بررسی کرده‌ایم که اگر مقدار درون num1 بزرگ‌تر از 2 بود، مقدار آن را درون متغیر result قرار بده در غیر این صورت مقدار 0 را قرار بده.

ساختار شرطی

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

در PHP سه نوع ساختار شرطی با نام‌های if - switch - شرط‌های تک خطی که در بالا اشاره کردیم و از آن چند مثال زدیم وجود دارد، ما در این قسمت به بررسی ساختارهای if و  switch می‌پردازیم.

ساختار شرطی if

ابتدای همین قسمت برای درک بهتر باید یک نمونه از ساختار if را ببینیم، به مثال زیر دقت کنید.

<?php

if(condition){
    // code
}

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

<?php

$age = 24;
if($age > 18){
    echo "You are over 18 years old.";
}
You are over 18 years old.

در شرط بالا ما بررسی کردیم که آیا مقدار درون متغیر age (سن) بزرگ‌تر از 18 است؟ که در بالا این شرط درست درآمده است و کد درون بلاک if اجرا و پیغام مورد نظر چاپ شده است.

اما اگر این شرط درست نبود چه کنیم؟ بلاک بعدی که برای ساختار شرطی if وجود دارد else می‌باشد که اگر شرط درون if درست یا true نبود به بخش else می‌رود و کدهای آن قسمت را اجرا می‌کند، به مثال زیر دقت کنید.

<?php 

$age = 24; 
if($age > 18){ 
    echo "You are over 18 years old."; 
}else{
    echo "You are under 18 years old.";
}
You are under 18 years old.

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

یک بلاک دیگری نیز به اسم elseif وجود دارد که بعد بلاک if می‌آید و می‌تواند چندین‌بار تکرار شود، با این منظور که شما می‌توانید چندین شرط را با هم بررسی کنید، به مثال زیر دقت کنید.

<?php 

$age = 15; 

if($age > 18){ 
    echo "You are over 18 years old."; 
}elseif($age >= 12 and $age <= 17){
    echo "Your age is between 12 and 17";
}else{ 
    echo "You are under 18 years old."; 
}
Your age is between 12 and 17

در مثال بالا بعد از شرط بررسی سن بزرگ‌تر از 18 سال رسیدیم به شرط بررسی سنی که بین 12 تا 17 سال است و بعد از اینکه شرط درست یا true درآمده است کد درون بلاک همان شرط اجرا شده است.

ساختار شرطی switch

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

<?php

switch(input){
    case lable1:
        // code
    break;
    case lable2:
        // code
    break;
    default:
        // code
    break;
} 

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

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

<?php

$language = "Farsi";

switch($language){
    case "English":
        echo "Welcome to 7lean";
    break;
    case "German":
        echo "Willkommen bei 7learn";
    break;
    case "Farsi":
        echo "به سون لرن خوش آمدید";
    break;
}
به سون لرن خوش آمدید

در مثال بالا ورودی ما متغیر language است که درونش کلمه Farsi ذخیره شده است، وقتی که این مقدار وارد ساختار switch می‌شود به دنبال آن کلمه در caseها می‌گردد، در case اول English قرار داده شده است که ورودی ما با آن تطابق ندارد و از آن case عبور می‌کند، به سراغ case بعدی می‌رود و به German می‌رسد و بررسی می‌کند و این نتیجه می‌رسد که باز هم تطابقی وجود ندارد و در نهایت به سراغ case آخر می‌آید و مطابقت پیدا می‌کند و کد درون این بلاک را اجرا می‌کند.

اگر توجه داشته باشید مشاهده می‌کنید که آخر هر case یک break وجود دارد، اما این برای چه است؟ در ساختار switch وقتی شما caseهای مختلفی تعریف می‌کنید باید مشخص کنید که این case به پایان رسیده است تا از تداخل جلوگیری شود، اما این تداخل چه‌گونه است؟

به کدهای زیر دقت کنید تا در ادامه توضیح بدهیم که این مشکل یا تداخل چه‌گونه به وجود می‌آید.
<?php 

$language = "English"; 

switch($language){ 
    case "English": 
        echo "Welcome to 7lean"; 
 
    case "German": 
        echo "Willkommen bei 7learn"; 
 
    case "Farsi": 
        echo "به سون لرن خوش آمدید"; 
    break; 
}
Welcome to 7leanWillkommen bei 7learnبه سون لرن خوش آمدید
در کد بالا ما ورودی خودمان را از Farsi به English تغییر داده‌ایم تا به اولین case که English است برسد. وقتی که به اولین case می‌رسد و مشاهده می‌کند که با ورودی تطابق دارد به داخل بلاک می‌رود تا کدهای درون آن را اجرا کند بعد از اجرا کردن کد وقتی که به break برخورد نمی‌کند تا از دستور خارج شود بدون اختیار به سراغ caseهای بعدی می‌رود تا به یک break برسد و درنهایت خروجی ما مثال بالا می‌شود که کدهای درون همه‌ی بلاک‌های case را اجرا کرده است.
همان‌طور که ما در شرط‌ها بلاک else داشتیم که اگر هیچ شرطی true در نمی‌آمد سراغ آن می‌رفت در اینجا نیز ما یک بلاک به اسم default داریم که کار else در شرط‌ها را انجام می‌دهد، به مثال زیر توجه کنید.
<?php 

$language = "French"; 

switch($language){ 
    case "English": 
        echo "Welcome to 7lean"; 
    break; 
    case "German": 
        echo "Willkommen bei 7learn"; 
    break; 
    case "Farsi": 
        echo "به سون لرن خوش آمدید"; 
    break;
    default:
        echo "No languages available";
    break; 
}
No languages available

در مثال بالا ما ورودی را به French تغییر دادیم که هیچ case با آن نام در switch وجود ندارد پس به سراغ default می‌آید و کد درون آن را اجرا می‌کند.

ساختارهای تکرار و حلقه

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

حلقه‌ی while

اولین حلقه‌ای که می‌خواهیم به آن بپردازیم حلقه‌ی while است که ساختاری مانند مثال زیر دارد.
<?php

while(condition){
    // code
}

برای داشتن یک حلقه while کافی است که کلمه کلیدی while را بیاوریم و جلوی آن یک پرانتز باز و بسته و درون آن پرانتز شرط پایان حلقه خود را می‌گذاریم و درون بلاک while کدهایی که قرار است تکرار شوند را می‌نویسیم، به مثال زیر دقت کنید.

<?php

$i = 1;
while ($i < 10) {
    echo $i . '<br />';
}

در حلقه بالا در قسمت شرط نوشته‌ایم که این حلقه تا زمانی ادامه داشته باشد که متغیر i کوچک‌تر از 10 است و در داخل حلقه هر بار مقدار i را چاپ کرده‌ایم و یک تگ <br> به انتهای آن چسبانده‌ایم تا به خط بعدی برود. اما اگر این کد را اجرا کنیم به خروجی 0 بی‌نهایت برخورد خواهیم کرد، اما برای چه؟

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

<?php 

$i = 1; 
while ($i < 10) { 
    echo $i . '<br />'; 
    $i++;
}

در حلقه بالا در انتهای حلقه ما یک ++i اضافه کرده‌ایم که هر بار این حلقه اجرا می‌شود یک واحد به مقدار i اضافه شود تا شرط true شود، اگر خروجی کد بالا را مشاهده کنیم به شکل زیر است.

1 2 3 4 5 6 7 8 9

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

حلقه do while

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

<?php

do{
    // code
}while(condition)

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

<?php
$i = 5;
do{
    echo $i . '<br>';
    $i++;
}while($i < 4);
5

در کد بالا ما یک شرطی که false خواهد شد را تعریف کرده‌ایم تا درک کنیم حلقه do while یک بار اجرا می‌شود، مقدار i مساوی با 5 است و در حلقه گفته‌ایم هر بار مقدار i را چاپ کند و به آن یک واحد اضافه کند و وقتی که به شرط while می‌رسد متوجه این می‌شود که شرط false است چون i کوچک‌تر از 4 نیست و ادامه حلقه اجرا نمی‌شود و از حلقه خارج می‌شود. نکته‌ای قبل هم اشاره شد این است که حلقه do while حتما یک‌ بار اجرا می‌شود.

<?php
$i = 1;
do {
    echo $i * 2 . '<br>';
    $i++;
} while ($i < 10);
2 4 6 8 10 12 14 16 18
حلقه‌ی do while دیگری تعریف کرده‌ایم که مقدار درون i را ضرب در 2 می‌کند و چاپ ‌می‌کند.

حلقه‌ی for

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

اول از همه باید کلمه کلیدی for را بیاوریم و جلوی آن یک پرانتز باز و بسته قرار دهیم، درون پرانتز ما 3 بخش داریم که باید تعریف کنیم، بخش اول که init counter نام دارد باید متغیر شمارنده خود را تعریف کنیم که در قسمت while ما متغیر i را تعریف کرده‌ایم و برای مثال مقدار صفر را درون آن قرار داده‌ایم و می‌توانیم همان متغیر i را نیز در اینجا تعریف کنیم. توجه داشته باشید که باید مقادیر تعریف شده در پرانتز را با ; (سمی کالمن) از هم جدا کنیم.

در بخش test counter شما باید نقطه پایان را مشخص کنید مانند while که برای مثال 10 > i نوشته بودیم در اینجا هم همان کار را می‌کنیم، در بخش پایانی که increment counter نام دارد باید شمارنده افزایشی و یا کاهشی خود را بیاوریم که قدم‌های ما در حلقه می‌باشد و با هم مثال ++i را دیده بودیم. به مثال زیر دقت کنید.

<?php

for($i = 1; $i <= 10; $i++){
    echo $i . '<br>';
}
1 2 3 4 5 6 7 8 9 10

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

<?php

for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 == 0) {
        echo 'Even: ' . $i . '<br>';
    }
}
Even: 2 Even: 4 Even: 6 Even: 8 Even: 10

در مثال بالا در یک حلقه که بین اعداد 1 تا 10 پیمایش می‌کرد با یک شرط بررسی کردیم که اگر عددی زوج بود آن را چاپ کند.

حلقه‌ی foreach

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

foreach (array_expression as $value){
    // statement
}

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

<?php

$arr = array('google','7learn','amazon','digikala');

foreach($arr as $value){
    echo $value . '<br>';
}
google 7learn amazon digikala

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

اما شاید برایتان سوال باشد که چگونه به اندیس یا ایندکس‌های آرایه دسترسی داشته باشیم؟
<?php

$arr = array('google','7learn','amazon','digikala');

foreach($arr as $key => $value){
    echo $key  .' = ' . $value . '<br>';
}
0 = google 1 = 7learn 2 = amazon 3 = digikala

همان‌طور که در مثال بالا آوردیم با قرار دادن یک متغیر بعد از کلمه‌ی کلیدی as و قرار دادن علامت مساوی و بزرگ‌تری ( <= ) می‌توان هر بار اینکدس آن مقدار درون آرایه را داشت.

جمع بندی

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

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