آموزش پی اچ پی-قسمت چهاردهم
تحریریه کدیاد
تاریخ انتشار : چهارشنبه 4 اسفند 1400
در جلسات قبلی گفتیم که آرایه در زبان برنامهنویسی php، متغیری است که قادر به ذخیرة مقادیری عددی، رشتهای و ترکیبی از این دو است. در آموزش پی اچ پی (PHP) جلسة قبل به توضیح آرایههای ایندکسدار عددی پرداخته و نحوة کارکرد و ویژگیهای آن را بیان کردیم. افزون بر آن در جلسه آموزش PHPسیزدهم، مثالهایی از توابع آرایهای ایندکس همچون count() زده شده و چگونگی انجام عملیات با کمک اینگونه آرایهها را شرح دادیم.
در این جلسه تصمیم داریم در مورد گروهی دیگر از خانوادة آرایه بهنام آرایههای انجمنی یا Associative Arrays صحبت کرده و به جزئیات آن بپردازیم. در ادامه با ما همراه باشید تا در طی آموزش پی اچ پی رایگان از سایت کدیاد، به بررسی سایر توابع آرایهای پرداخته و کاربرد آنها را در طول انجام پروژهها ببینیم.
آرایه انجمنی (Associative Arrays)
آرایههای انجمنی دارای دو آرگومان ورودی هستند که شامل آرگومان کلید key و آرگومان مقدار value میشوند. این دسته از آرایهها بر اساس آرگومان کلیدی خود، نامنویسی شده و استفاده میگردند. این دسته از آرایهها با کمک یک پارامتر کلیدی تعریف شده و بر اساس آن نامنویسی میشوند. طبق مثال آورده شده در آموزش پی اچ پی (PHP) جلسه چهاردهم، این گونه مثال زدیم که:
$myf=array("ali"=>"20","mahsa"=>"20","mmd"=>"21","mahdi"=>"25","reza"=>"27");
در مثال بالا با دو متغیر کلید و مقدار، آرایهای را تعریف کردیم. افزون بر آن میتوان آرایه را به شکل زیر و با فراخوانی چندین بارة متغیرها و اصطلاحاْ به شکل دستی، آرایه انجمنی تعریف کرد:
$ myf ["nima"] = "25";
$ myf ["Ali"] = "20";
$ myf ["Mahsa"] = "20";
Var_dump($ myf);
اهمیت آموزش آرایههای انجمنی در زبان php
تفاوت آرایههای عددی ایندکسدار با آرایه انجمنی در چیست؟
در این قسمت به تفاوت این دو آرایه پرداخته و به بررسی نکات آن میپردازیم.
$name = array("P"=>"Pouria", "A"=>"Arezoo", "M"=>"Mizfa"); :آرایة انجمنی
:آرایة ایندکسدار$names = array("Pouria", "Arezoo", "Mizfa");
در دو دستور بالا یک خط کد را به دو شکل متفاوت نوشتهایم. یکی با تعریف آرایه انجمنی بههمراه کلید و مقدار و دیگری بهصورت آرایه عددی و صرفاً با بیان آرگومانهای مقدار قرار گرفته در آرایهها. اولین نکتهای که بهچشم میآید آن است که ایندکس آرایههای انجمنی به صورت دستی وارد میشود؛ در حالیکه در آرایههای ایندکسدار، کلید آرایه سیستمی زده شده و پیشفرض آن به صورت عددی است.
همانطور که در جلسه قبلی آموزش پی اچ پی به زبان ساده هم تأکید شده است، کلیدهای ایندکس پیشفرض از صفر شروع میشوند. اگر این نکته یا آموزههای قبلی را فراموش کردهاید، میتوانید از فیلم جلسه سیزدهم آموزش پی اچ پی استفاده کنید.
چگونه از آرایة انجمنی خروجی بگیریم؟
برای گرفتن خروجی از آرایههای انجمنی همچون مثال زده شده، میتوانید از دستور echo استفاده کنید یا بهوسیلة تابع var_dump(); جزئیات آنرا بهخوبی ببینید. افزون بر آن کلیه توابع آرایهای موجود در کتابخانة زبان برنامهنویسی php نیز، بر حسب نوع کارکرد پروژه، قابلیت تعریف بعد از این دستور را خواهند داشت. در ادامة دوره آموزش برنامه نویسی PHP، به این مباحث نیز خواهیم رسید.
$myf=array("ali"=>"20","mahsa"=>"20","mmd"=>"21","mahdi"=>"25","reza"=>"27");
echo $myf ['ali']; // Outputs: 20
همانطور که مشاهده میکنید برای گرفتن خروجی از آرایههای انجمنی، میتوان از کلید تعریف شده استفاده کرده و دقیقا مقدار مربوط به آن را مشاهده کرد.
کاربرد آرایههای انجمنی در برنامهنویسی به زبان php
ولی مثلاً در نمونة بعدی آمده در آموزش پی اچ پی (PHP)، این آرایه از نوع آرایة ایندکسدار عددی است و از index پیشفرض بهعنوان کلید استفاده شده است.
$myf = array("ali","mahsa","mmd");
echo $myf['1']; // Outputs: mahsa
آرایه های انجمنی تفاوت چندانی با آرایههای عددی ندارند. در واقع این فرق تنها در میزان ایندکس آورده شده توسط خود شخص برنامهنویس است که میتواند مقداری عددی یا متشکل از حروف باشد. به طور کلی ساختار آرایههای انجمنی اینگونه است:
Key <= Value
Key همان اندیس و Value همان مقداری است که به آن کلید (Key) نسبت داده میشود. برای درک بهتر، به مثالهای زده در جلسات آموزش PHP توجه کنید. حتی دستی نوشتن کدها نیز بهصورت ردیفی، تفاوتی در نوع ساختار آرایه انجمنی ایجاد نکرده و نتیجة خروجی یکسانی را تحویل میدهد؛ اما برای تمیزی کد بهتر آن است از توابع دستوری کتابخانهای و سیستمی بهره گرفته شود.
تابع array_slice() در آموزش php
تابع array_slice() یکی از توابع آرایهای است که امکان استفاده از آن در آرایههای انجمنی وجود دارد. با استفاده از این تابع، میتوان قسمتهای مختلفی از اطلاعات تعریف شده را تقسیمبندی کرده و به نمایش مقداری از آنها اقدام کرد.
برای نوشتن تابع array_slice() ، میبایست ساختار تابع را رعایت کنیم. این تابع دارای سه آرگومان ورودی است که شامل نام آرایه، شمارة ایندکس و تعداد مورد نیاز برای ارسال به خروجی میشود. با کمک این تابع، کاربر قادر است قسمتی از دادههای مورد نظر خود را برش زده و برای ادامة عملیات استفاده کند.
ساختارهای انجمنی در زبان php
توضیح ساختار (syntax) تابع آرایهای array_slice()
تابع array_slice() در آموزش پی اچ پی، از نام آرایه گرفته تا ایندکسهای مورد نظر و پارامترهای $offset و طول معین $length جهت بررسی دادهها استفاده میکند. این تابع اقدام به انتخاب آرگومانهای مورد نظر از آرایه ورودی کرده و آن ها را به خروجی ارسال میکند.
array_slice($array, $offset [,$length [,$preserve_keys]] ); |
برخی از آرگومانهای ارسال شده به این تابع، متغیرهایی اجباری و برخی دیگر پارامترهایی اختیاری هستند که نبودشان تأثیری در گرفتن خروجی نخواهد داشت. بدین ترتیب نام آرایه یا آرگومان $array متغیری اجباری بوده که میبایست همراه ساختار تابع به خروجی ارسال شود. بدین طریق زبان ماشین متوجه میشود روی کدام آرایه باید کار انجام دهد. علاوه بر آن آرگومان $offset یا شماره ایندکس نیز برای واکشی اطلاعات از آرایه انجمنی مذکور واجب بوده و لازم است به مقداردهی آن توجه شود.
با تمامی این موارد طبق آموزش پی اچ پی (PHP)، ارسال متغیر $length پارامتری اختیاری محسوب شده و بسته به نوع کارکرد الگوریتم برنامه تصمیمگیری میشود. همچنین متغیرهای داخلی برای محاسبة طول ایندکس نیز خود بهمانند سرشاخهشان، اختیاری به شمار میروند. این آرگومانها که با نام $preserve_keys شناخته میشوند، دارای خروجی Boolean یا همان true&false هستند.
اگر متغیر بر روی عبارت true قرار گرفته باشد، کلیه کلیدها حفظ شده و در مقابل با ارسال جواب false، اطلاعات کلید پاک شده و بهشکلی ریستشده در میآیند. ذکر این نکته بهجاست که مقدار آرگومان $preserve_keys بهصورت پیشفرض false در نظر گرفته میشود که در شرایط مورد نظر تغییر خواهد کرد.
مقدار خروجی یا بازگشتی تابع آرایهای array_slice()، بهصورت پارامتر واکشی میشود. برای توضیح جزئیات ساختار فرمول این تابع، میتوانید از جلسات آموزش پی اچ پی به زبان ساده در سایت کدیاد نیز استفاده کرده و توضیحات اساتید این دوره را بشنوید.
نمونه مثال array_slice() در جلسات آموزش php
بررسی مثال تابع آرایهای array_slice() در جلسه چهاردهم
در ادامه به بررسی مثالی که در جلسة آموزش پی اچ پی رایگان در اختیار دانشجویان قرار داده شده است، میپردازیم.
$myf=array("ali"=>"20","mahsa"=>"20","mmd"=>"21","mahdi"=>"25","reza"=>"27");
$slice=array_slice($myf,2,2);
Var_dump($slice);
در این مثال متوجه شدیم که با آرایة انجمنی تعریف شده، میتوان از تابع آرایهای array_slice استفاده کرده و از آرگومان سوم با ایندکس ۲ اقدام به چاپ متغیرها تا سه مرحله کرد. بهطوریکه در خروجی این اطلاعات ارسال میشود:
Array(3) {[“mmd”]=>string(2)”21” [“mahdi”]=>string(2)”25” }
تابع list () در آموزش PHP
تابع list () در آموزش پی اچ پی (PHP) بهمانند تابع آرایه یا همان array کار کرده و صرفاً وظیفة مقداردهی به آن را برعهده دارد. در واقع این تابع نقشی در ساخت توابع نداشته و صرفاً به قسمتی از آرایه مربوطه، مقداری مشخص را اختصاص میدهد. ساختار این تابع به شکل زیر است:
list ( $var1, $var2, $var3.. ) |
توضیح ساختار (syntax) تابع آرایهای list ()
تابع list() در آموزش پی اچ پی (PHP) همانند تابع array() در اصل یک تابع نیست. کاربرد تابع لیست بدینگونه است که اگر با آرایهای برابر شود، اطلاعات آن آرایه را برگردانده و نمایش میدهد. در واقع تابع لیست یک دستور یا سازه از زبان پی اچ پی است که جهت مقداردهی لیستی از آرگومانهای یک آرایه در یک عملیات و الگوریتم واحد، بهکار میرود.
آرگومانهایی که در تعریف این تابع استفاده میشوند عبارتند از پارامترهای اصلی و اختیاری. متغیر اول که با نام variable 1 یا $var1 شناخته میشود، آرگومانی اجباری است که نمایشدهندة مقدار اصلی آرایه برگردانده شده است. اما سایر variableهای موجود در دستور، اختیاری بوده و بر حسب نوع الگوریتم و اهداف برنامه تغییر میکند. تابع list() خروجی بهخصوصی را بر نگردانده و صرفاً میتوانید با استفاده از تابع var_dump()، مقادیر نمایش داده شده را مشاهده کنید.
نمونه مثال تابع آرایهای list () در جلسات php
در ادامه مثالی که در دوره آموزش برنامه نویسی PHPجلسه چهاردهم زده شده است را مرور میکنیم:
$sfn()=array(“ali” , “naderi” , 21);
List($fname,$lname,$age)=$sfn
Var_dump($fname);
خروجی:
Srting (3) “ali”
حال اگر یک متغیر ثانویه اضافه کرده ولی مقداری برایش اختصاص نداده باشیم، سیستم کلمه null را بر میگرداند. لازم است هر متغیر تعریف شده در تابع list ، متقابلاً به یک مقدار در آرایه مربوطه متصل شود.
$sfn()=array(“ali” , “naderi” , 21, “ red”);
List($fname,$lname,$age,$color)=$sfn
Var_dump($color);
خروجی:
Srting (3) “red”
توضیح توابع بهکار رفته در آرایههای ایندکسدار
در ادامه جلسات آموزش پی اچ پی (PHP) به بررسی توابعی میپردازیم که در رابطه با آرایههای ایندکسدار، قابل استفاده هستند. اولین تابع بررسی شده در این جلسه را به تابع sort اختصاص میدهیم. تابع sort() در آموزش پی اچ پی (PHP)، مرتب کنندة آرگومانهای موجود در آرایه است. ساختار این تابع بدین صورت است:
sort( $array [, $sort_flags] ); |
کاربرد تابع sort همانطور که از نامش مشخص است بهمنظور مرتبکردن آرگومانهای یک آرایه بهکار میرود. با کمک این تابع کلیه پارامترهای موجود در آرایه به شکلی کاهشی یعنی از کوچک به کوچک مرتب میشوند. آرگومانهای تعریف شده در تابع list شامل دو متغیر به صورت اجباری و اختیاری است.
متغیر $array جهت نمایش آرگومانهای آرایه مربوطه اجباری است؛ اما متغیر $sort_flags اختیاری بوده و صرف تعیین نوع ترتیب بهعمل آمده، استفاده میشود. با استفاده از این آرگومان طریقة مرتبسازی آرایة ارسالی معلوم میشود. مرتبسازی آرایهها خود به ۴ مدل انجام میشود که عبارتند از:
- Regular_Default بدون تغییر در نوع دادهها، مقادیر مرتب میشوند.
- Numeric مقادیر آرایه ارسالی بر حسب ترتیب عددی مرتب میشوند.
- String مقادیر آرایة مربوطه بهصورت رشتهای و مانند ترتیب حروف الفبا مرتب میشوند.
- Local_String این مدل مرتبسازی مربوط به متغیرهای آرایهای بر حسب ترتیب زبان محلی است.
نمونه مثال تابع sort در آموزش پی اچ پی
مثال تابع sort() در جلسات آموزش پی اچ پی (PHP)
در جلسة چهاردهم آموزش پی اچ پی (PHP)، به بررسی دو مثال از تابع sort پرداختیم.
$myf=array(“ali”, “mahsa”, “mmd”, “mahdi”, “reza”);
Sort($myf);
$arrlen=count($myf);
for($i=0, $i<$arrlen, $i++) {
echo($myf[$i]). ”<br>”;
}
خروجی: در مثال زده شده در آموزش پی اچ پی (PHP)، تابع اسامی بر حسب ترتیب حروف الفبای انگلیسی و به شکل String مرتب شدهاند:
ali
mahdi
mahsa
mmd
reza
مثال بعدی> حال یکبار دیگر این تمرین را به صورت آرایه عددی نمایش داده و انتظار داریم تابع آرایهای sort آنها را بهصورت Numeric مرتب کند:
$myf=array(“2”, “54”, “68”, “69”, “1020” , “2021”);
Sort($myf);
$arrlen=count($myf);
for($i=0, $i<$arrlen, $i++) {
echo($myf[$i]). ”<br>”;
}
خروجی در این تابع اعداد بر حسب صعودی (کوچک به بزرگ) و به شکل Numeric مرتب شدهاند. در آموزش پی اچ پی (PHP) از این موارد بهشکلی متداول و جهت مرتبسازی مقادیر استفاده میشود:
2
54
68
69
1020
2021
مرتب سازی آرایه به ترتیب نزولی با تابع rsort
در ادامه مباحث آموزش پی اچ پی (PHP) به بررسی تابع rsort در هر دو طیف آرایههای عددی و انجمنی پرداخته شده است. تابع rsort برعکس تابع sort که بهمرتب کردن متغیرهای آرایه به صورت صعودی اقدام میکرد، پارامترها را بهشکلی نزولی مرتب کرده و از بزرگ به کوچک میچیند. در ادامه مثالی در رابطه با آرایههای ایندکسدار عددی میبینیم:
$myf=array(“ali”, “mahsa”, “mmd”, “mahdi”, “reza”);
rSort($myf);
$arrlen=count($myf);
for($i=0, $i<$arrlen, $i++) {
echo($myf[$i]). ”<br>”;
}
خروجی:
reza
mmd
mahsa
mahdi
ali
و یا در حالت Numeric نیز همین عملیات را انجام میدهد:
$myf=array(“2”, “54”, “68”, “69”, “1020” , “2021”);
rSort($myf);
$arrlen=count($myf);
for($i=0, $i<$arrlen, $i++) {
echo($myf[$i]). ”<br>”;
}
خروجی:
2021
1020
69
64
54
2
تابع rsort و استفاده از آن در آرایههای انجمنی
حال نتیجه توابع rsort را در آرایههای انجمنی نیز خواهیم دید:
نمونه مثال تابع rsort در آرایههای انجمنی
در این مثال از آموزش پی اچ پی (PHP)، برای ارسال پارامترها به خروجی و به شکلی مرتبشده و نزولی، از فرمان foreach استفاده شده است. با استفاده از فرمان بالا، علاوه بر ایندکس ارسالشده، مقدارهای متصل شده به آن ایندکس را نیز چاپ کرده و از بزرگ به کوچک مرتب کرده است. در خروجی این کد، کلیة دادهها بر حسب مقدار متصل شده به هر پارامتر کلیدی، مقداردهی میشود:
Key=”reza”, value=100
Key=”mmd”, value=90
Key=”mahdi”, value=45
Key=”mahsa”, value=33
Key=”ali”, value=20
مرتب سازی آرایه با استفاده از توابع asort و ksort
در استفاده از توابع asort و ksort همچون توابع sort و rsort عمل میکنیم. تنها موردی که باعث تفاوت این دو تابع از موارد قبلی و با یکدیگر میشود، ارتباط آنها با نوع مقادیر مرتب شده است. در تابع asort به مرتبسازی قسمت مقادیر آرایه پرداخته و آنها را بهصورت صعودی مرتب میکند اما طبق آموزش پی اچ پی (PHP) اگر قصد داشته باشیم مقادیر را به شکلی نزولی و با کمک تابع assort مرتب کنیم، به جای آن از تابع arsort کمک میگیریم.
در مقابل برای ارسال کلید آرایهها به خروجی و مرتبسازی آنها به شکلی صعودی از تابع ksort استفاده میکنیم. همچنین در صورت نیاز به مرتب کردن کلیدها بر حسب نزولی میتوان از تابع مشابه krsort استفاده کرد. این توابع در جهت آسانتر شدن کار برنامهنویس در کتابخانه وجود داشته و بهصورت توابع پیشفرض تعریف شدهاند.
نمونه مثال حلقة foreach در توابع sort
جمعبندی
یکی از مهمترین مباحث مطرح شده در آموزش پی اچ پی (PHP)، بحث آرایهها است. در این دوره تأکیدی فراوان بر آموزش این قسمتها و تمرینهای مستمر در این خصوص میشود. استفاده از انواع آرایهها به برنامهنویس کمک کرده تا خواستههای پروژه را بهشکلی هدفمند و مناسب پیش ببرد. برای ممارست در یادگیری انواع توابع مورد استفاده در آرایههای ایندکسدار و انجمنی، استفاده از نمونهها و مثالهای سایت کدیاد، میتواند کمک بسیار خوبی برای دانشجویان این دوره باشد.
قسمت قبلی آموزش رایگان php :
کاربرد فانکشن پیشفرض آرایهای array_pop()
قسمت بعدی آموزش رایگان php
چگونگی نمایش مختصات آرایه سه بعدی
یا جهت مشاهده ویدیوهای اموزشی آموزش رایگان پی اچ پی وارد این صفحه شوید.