parsgreen.com
article

آرایه (Array) در برنامه نویسی php

php-array

در مبحث گذشته از بخش آموزش مقدماتی php با نحوه کار foreach که یک نوع از حلقه ها در php است آشنا شدیم و گفتیم که این نوع حلقه برای مدیریت مقادیر به صورت آرایه (Array) کاربرد دارد (به فرض مقادیری که از فرم های وب با قابلیت انتخاب چندگانه یا multiple ارسال می شوند)، اما این بار و در ادامه آموزش های مقدماتی می خواهیم دانشمان را در برنامه نویسی وب با php کمی بیشتر توسعه دهیم و مبحث آرایه ها را با هم بررسی کنیم، فراگیری درست این مبحث می تواند درک ما را از نحوه کار php بسیار ارتقاء دهد و در خیلی از پروژه های مبتنی بر وب، رهگشای ما باشد.

آرایه (Array) چیست؟


آرایه در برنامه نویسی به متغیری گفته می شود که درون خود، می تواند چند متغیر مختلف و با مقادیر متفاوت داشته باشد، همانطور که می دانیم، متغیرها در حالت معمول تنها می توانند یک مقدار مشخص داشته باشند، اما اگر به فرض بخواهیم اطلاعات سنی کارکنان یک شرکت را برای یک پژوهش آماری مورد بررسی قرار دهیم، به شیوه سنتی ناچاریم برای هر نفر یک متغیر بنویسیم و یک مقدار متفاوت نسبت دهیم و در هنگام فراخوانی، مجددا این روند را تکرار کنیم، اما با آرایه این کار بسیار آسان تر می شود، با نوشتن متغیر ها و مقادیر در یک آرایه برای یک بار، می توانیم هر موقع که نیاز بود، در بین کلید ها و مقادیر به دنبال موارد مورد نظر خود باشیم و نتایج را از بین متغیرهای مختلف استخراج کنیم، از این گذشته به طور مثال گاهی نیاز داریم که کاربران سایتمان از بین یک فیلد انتخاب شونده یا select باکس، چند مقدار متفاوت را همزمان انتخاب کنند (شاید نمونه آن را در وب دیده باشید که با نگه داشتن کلید Ctrl این کار انجام می شود)، اگر این مقادیر از فرم html به برنامه php ارسال شوند، تنها از طریق آرایه است که می توانیم آنها را تجزیه کرده و مدیریت کنیم.

شیوه های مختلف تعریف آرایه در php


آرایه را در php همانند دیگر زبان های مرتبط با وب مانند جاوا اسکریپت، می توان به چند صورت تعریف کرد و در کل سه شیوه برای این کار وجود دارد:
- تعریف آرایه ها به صورت کلیدهای عددی و مقدار (Numeric).
در این شیوه هر یک از متغیرهای درونی آرایه با یک کلید عددی  (با استفاده از علامت []) و مقدار، تنظیم می شوند، به طور مثال:
<?php
$page[0] = "Home";
$page[1] = "Learn";
$page[2] = "Buy";
$page[3] = "About";
?>
حال می توانیم با دستور زیر از آرایه بالا خروجی بگیریم، کافی است متغیرها را با کلیدهای خاص آن فراخوانی کنیم:
<?php
echo $page[2];
?>
خروجی کد بالا به صورت زیر خواهد بود:
Buy
همان طور که ملاحظه می کنید، ما از بین متغیرهای مختلف آرایه فرضی page، مقادیر کلید سوم (که با عدد 2 مشخص شده است) را به خروجی ارسال کرده ایم که در مثال بالا، برابر عبارت "Buy" است.
توجه کنید که شمارش در آرایه ها همیشه از صفر شروع می شود نه از یک، اینگونه اشتباهات گاهی باعث می شوند به فرض ساعت ها برای رفع باگ موجود در یک برنامه وقت صرف کنیم، غافل از اینکه یک صفر و یک ناقابل باعث بروز تمام مشکلات بوده اند!
- تعریف آرایه ها به شیوه خطی و مجموعه ای یا شرکت پذیر (Associative).
در این روش برعکس مورد قبل، از شیوه نگارش علامت [] استفاده نمی کنیم، بلکه کلیدها و مقادیر آنها را به صورت یک مجموعه و با کمک دستور array تعریف می کنیم، به طور مثال:
<?php
$page = array(0 => "Home", 1 => "Learn", 2 => "Buy", 3 => "About");
?>
اکنون به همان روشی که در بالا ملاحظه کردیم، می توانیم از این آرایه نیز خروجی بگیریم، در واقع تنها شیوه تعریف و مقداردهی ما فرق کرده است.
<?php
echo $page[0];
?>
خروجی کد بالا به صورت زیر خواهد بود:
Home
در این شیوه، حتی می توان کلیدها را نیز ننوشت و تنها مقادیر را به آرایه نسبت داد، در این صورت کلیدها به صورت خودکار ایجاد می شوند و در دسترس هستند:
<?php
$page = array("Home", "Learn", "Buy", "About");
?>
- تعریف آرایه به شیوه تو در تو و چندبعدی (Multidimensional).
نوع دیگری از تعریف آرایه در php، تعریف آن به شیوه آرایه در آرایه است، یعنی درون یک آرایه، خود چند آرایه دیگر قرار دارد که درون آن آرایه ها ممکن است همین روال وجود داشته باشد، این شیوه ممکن است کمی پیچیده گی کار با آرایه ها را بیشتر کند، اما در مواردی استفاده از آن اجتناب ناپذیر است، به مثال زیر توجه کنید.
<?php
$result = array(
"pages" => array("home","learn","buy"),
"users" => array("maryam","sina","mohammad")
);
?>
مسلما شیوه خروجی گرفتن از آرایه های بالا با آنچه که پیشتر دیدیم متفاوت خواهد بود، در اینجا لازم است که ابتدا متغیر اصلی آرایه را مشخص کنیم، سپس آرایه زیرمجموعه و در نهایت کلید مورد نظر در آن آرایه را، تا مقدار به خروجی ارسال شود:
<?php
echo $result['pages'][1];
?>
به این صورت دستور بالا در بین متغیر فرضی result که عنوان آرایه اصلی ماست و آرایه زیر مجموعه آن با نام pages، کلید دوم (که با عدد 1 دریافت می شود) را به خروجی می دهد، یعنی خروجی برابر خواهد بود با:
learn
در واقع با این شیوه تعریف آرایه، کلیدها به صورت خودکار و درونی ساخته می شوند و نیازی نیست ما به صورت دستی آنها را تعریف کنیم، کافی است مقادیر را به هر آرایه نسبت دهیم و بقیه کار را به مفسر php بسپاریم.
مثال دیگر این بار با نوشتن کلیدها:
<?php
$result = array(
"pages" => array(0 => "home", 1 => "learn", 2 => "buy"),
"users" => array(0 => "maryam", 1 => "sina", 2 => "mohammad")
);
?>
ملاحظه می کنید که بحث آرایه ها در واقع بحث متغیر، کلید و مقدار است، یعنی با درک این سه موضوع تا حدود زیادی می توان با نحوه کار آن آشنا شد.

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


مفسر php به طور ذاتی و از پیش تعریف شده، برای کار با آرایه ها در برنامه نویسی پیشرفته، حلقه ی foreach را در نظر گرفته است، با foreach می توانیم به فرض اطلاعات ارسال شده از یک فرم html که قابلیت انتخاب چندگانه دارد را تجزیه کرده و آیتم به آیتم مورد پردازش قرار دهیم، به طور مثال فرم html زیر را در نظر بگیرید.
<form action="#" method="post">
<select name="country[]" multiple="multiple">
<option value="Asia">Iran</option>
<option value="Europe">Germany</option>
<option value="Asia">Japan</option>
</select>
<input type="submit" value="ارسال" />
</form>
این یک فرم معمولی نیست! در این فرم فیلد انتخاب شونده ما قابلیتی منحصر به فرد دارد، این قابلیت این است که کاربر می تواند با نگه داشتن کلید Ctrl از بین option های موجود یک یا چند مورد را در یک ارسال، انتخاب کند، ملاحظه می کنید که علامت [] و عبارت multiple به حالت عادی فرم های html اضافه شده اند، این کار برای ایجاد یک آرایه از اطلاعات ارسالی است، اما در سمت سرور این آرایه را با چه چیز مدیریت کنیم؟
پاسخ روشن است، با حلقه foreach؛ به مثال زیر توجه کنید:
<?php
$country = $_POST['country'];
foreach ($country as $land){
    echo $land . '<br />';
}
?>
به این صورت اگر کاربر تمام موارد را انتخاب کند، خروجی به شکل زیر خواهد بود:
Asia
Europe
Asia
در واقع این نتیجه را به وسیله حلقه for نیز می توان به دست آورد، اما به دلیل اینکه حلقه for به طور ذاتی برای کار با آرایه ها ساخته نشده است، باید هنگام خروجی، مقادیر کلید مورد نظر خود را نیز به آن بدهیم، به طور مثال:
<?php
$country = $_POST['country'];
$count = count($country);
for($i=0;$i < $count;$i++){
    echo $country[$i] . '<br />';
}
?>
کد بالا نیز مشابه حلقه foreach رفتار خواهد کرد.
توجه کنید که در اینجا، کلید آرایه به صورت داینامیک و در هر دور حلقه ایجاد می شود، در واقع مقادیر کلید، همان مقادیر متغیر i است که در هر دور حلقه افزایش می یابد و حلقه نیز تا جایی که مقادیر i از تعداد آرایه ها که با تابع count محاسبه شده اند، کوچکتر باشد، ادامه می یابد.
بحث آرایه ها به آنچه گفتیم ختم نمی شود، در php برای کار با آرایه ها توابع درونی زیادی وجود دارد که در ادامه آموزش های مقدماتی و در مطالب آینده در رابطه با آن بیشتر خواهیم گفت.
sectionدسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» توابع کار با آرایه در php - بخش دوم
» توابع (Functions) در php
» کار با switch و case در php
» حلقه for و while در php
» آشنایی با برنامه نویسی به زبان PHP
commentنظرات (۳۴ یادداشت برای این مطلب ارسال شده است)
نویسنده: sina
زمان: ۱۱:۳۷:۴۵ - تاریخ: ۱۳۹۱/۰۶/۱۴
سلام به مدیر سایت
اول تشکر میکنم بخاطر سایت خوبتون
دوم اینکه مطالب آموزش php خیلی کمه
پاسخ: 
سلام
مطالب بخش ها هنوز کامل نشده است و با توجه به اینکه آموزش ها باید قبل از انتشار، بررسی و تست شوند، به تدریج این کار انجام می شود.
نویسنده: شکرزاده
زمان: ۱۵:۱۴:۳۴ - تاریخ: ۱۳۹۱/۰۸/۲۹
با سلام و احترام و ضمن تشکر از زحمات شما و مطالب خیلی مفیدی بود ممنون از شما من دانشجوی کارشناسی مهندسی فناوری اطلاعات هستم و در برنامه نویس سی شارپ ضعیف هستم لذا خواهشمند است در صورت امکان خواهشمند است جزوه اموزش برنامه نویسی سی شارپ را برای بنده ارسال فرمائید با احترام شکرزاده
پاسخ: 
سلام
خواهش می کنیم، متاسفانه فعالیت های سایت تنها در چارچوب برنامه نویسی وب است و در مورد سایر زبان های برنامه نویسی فعالیتی نداریم.
نویسنده: یه دعاگو
زمان: ۱۳:۰۹:۱۲ - تاریخ: ۱۳۹۱/۱۱/۱۱
سلام
همه مطالب عالیه عالی !!!
ازتون تشکر میکنم و برای سلامتی و شادی دلتون دعا. ممنونم
دیر سایتتون و پیدا کردم ولی چند روزه دارم مثل یه رمان جذاب همه صفحاتش رو می خونم
و منتظر روزی می مونم که یک پروژه کوتاه رو از ابتدا و مرحله به مرحله پیاده سازی و طراحی کنید به طوریکه همه بخش ها (html, css, js, php و Mysql) رو در بربگیره ، سپاسگزارم.
پاسخ: 
سلام
خواهش می کنیم، نظر لطف شما است، البته به قولی بیشتر سعی می کنیم به کاربران به جای ماهی، ماهی گیری یاد بدهیم!
نویسنده: یه دعاگو
زمان: ۱۲:۵۷:۴۶ - تاریخ: ۱۳۹۱/۱۱/۱۴
با سلام و تشکر
به نظر شما بهتر نیست بعد از آموختن ماهیگیری با هم تجربه گرفتن یک ماهی رو هم داشته باشیم، تا این آموزش جاودانه تر باشه؟
در واقع من خودم در حد متوسط با همه بخش ها کار کردم و آشنا هستم ولی جرات و جسارت پیاده کردن یک سایت و در کنار هم قرار دادن این آموخته هام رو ندارم ، ممنون می شم اگر راهنمایی ام کنید.
پاسخ: 
سلام
البته دانش وب واقعا گسترده است و برای ساخت یک سایت متوسط باید وقت زیادی گذاشت و با مباحث زیادی آشنا بود، به همین دلیل است که نمی توان در مطالب سایت یک پروژه را خلاصه کرد، چون از حوصله اکثر کاربران خارج است و دلیل دیگر اینکه اگر برنامه نویسی را به صورت کاربردی یاد بگیریم، اندک اندک می توان با پروژه های کوچک و آزمایشی کار کنیم، خیلی از تجربه ها در حین کار کسب می شود؛ ما هم در آموزش ها سعی کرده ایم مطالب به گونه ای باشد که در چند نوع پروژه و با توجه به نیاز کاربران قابل استفاده باشد.
نویسنده: یه دعاگو
زمان: ۰۹:۵۸:۱۲ - تاریخ: ۱۳۹۱/۱۱/۱۵
بله، بسیار ممنونم.
نویسنده: جهان
زمان: ۰۰:۳۶:۲۴ - تاریخ: ۱۳۹۱/۱۱/۲۸
با سلام و خسته نباشید
نمی دانم این زحمت های شما با چه چیز قابل جبران است ولی امیدوارم که به همه ی ارزوهاتون برسین
فقط اگه بتونین این مجموعتون رو به صورت یک کتاب در بیارین واسه دانلود بزارین پولیم باشه مهم نیست ممنون میشم
همیشه شاد باشین
پاسخ: 
سلام
خیلی ممنون از نظر لطف و پیشنهاد شما، در حال حاضر این امکان میسر نیست، اما ممکن است در آینده عملی شود.
نویسنده: شهرام
زمان: ۱۲:۵۵:۴۱ - تاریخ: ۱۳۹۲/۰۲/۲۹
سلام خسته نباشید یه سوال داشتم
من یه فرم تو صفحه php نوشتم و می خوام این فرم چند بار تکرار بشه به خاطر همین اون رو تو for گذاشتم ولی ارور میده میشه راهنمایی کنید ممنون
for($i=0;$i<=2;$i++){
<form action="register1.php" method="post">
<label for="tel1">شماره تلفن:</label>
<input name="mobile" id="mobile" type="int" maxlength="255" />
<input type="submit" value="وارد کردن" />
</form>
}
پاسخ: 
سلام
نمی توانید کدهای HTML را به صورت مستقیم در دستورات PHP استفاده کنید، از echo استفاده کنید، مثال:
<?php
for($i=0;$i<=2;$i++){
echo '<form>
<label for="tel1">شماره تلفن:</label>
<input name="mobile" id="mobile" type="int" maxlength="255" />
<input type="submit" value="وارد کردن" />
</form>';
}
?>
نویسنده: امیرحسین
زمان: ۱۶:۱۹:۳۸ - تاریخ: ۱۳۹۲/۰۵/۱۶
دوباره سلام دوست عزیز امیدوارم حالت خوب باشه یه سوالی داشتم
<?php
@$name = $_POST['name'];
if ($name) {
echo "$name خوش آمدید";
}
else {
echo "مهمان خوش آمدید";
}
?>
می خوام بجای خوش امدید هر چی که تو اینپوت تایپ کنی بعد دکمه رو بزنی متن پیام به صورت جاوا اسکریپت ظاهر بشه تو پنجره ی مرورگر
مثلا میخوام
echo "$name خوش آمدید";
این رو تو پنجره ی مرورگر ظاهر بشه به صورت جاوا اسکریپت می خوام بدونم پی اچ پی و جاوا اسکریپت چطور میشه با هم مخلوط کرد ممنون میشم جوابم رو بدید
پاسخ: 
سلام
PHP یک زبان HTML embedded است، یعنی می توانید دستورات آن را با سایر تگ های HTML در یک فایل داشته باشید، لذا:
<?php
@$name = $_POST['name'];
$message = NULL;
if ($name) {
$message = "$name خوش آمدید";
}
else {
$message = "مهمان خوش آمدید";
}
?>
<script type="text/javascript">
alert(<?php echo $message?>);
</script>
نویسنده: مومني موگويي
زمان: ۱۱:۴۱:۴۲ - تاریخ: ۱۳۹۲/۰۶/۲۷
سلام خسته نباشيد ميشه راجع به تابع each تو php يه مقدار توضيح بدين، اگر امكانش هست همراه با مثال ممنون
پاسخ: 
سلام
تابع each یکی از توابع کار با آرایه ها در PHP است، کارکرد آن به این نحو است که کلید و مقدار یک آرایه را (شروع از ابتدا و اولین کلید) استخراج کرده و نتیجه را به صورت یک آرایه با چهار کلید، خروجی می دهد، دو کلید اول این آرایه خروجی، با مقدار و دو کلید دیگر با کلید آرایه اصلی پر می شوند، مثال:
<?php
$main_array = array('Hello', 'World!');
$each_array = each($main_array);
print_r($each_array);
?>
خروجی:
Array
(
[1] => Hello
[value] => Hello
[0] => 0
[key] => 0
)
این تابع معمولا در کنار list و برای پیمودن یک آرایه و استخراج کلید و مقدار استفاده می شود (در کل تابع پر کاربردی نیست)، مثال:
<?php
$main_array = array('Hello', 'World!');
while(list($key, $value) = each($main_array)){
echo $key .' - '. $value .'<br>';
}
?>
خروجی:
0 - Hello<br>1 - World!<br>
نویسنده: مومني موگويي
زمان: ۱۲:۵۶:۴۱ - تاریخ: ۱۳۹۲/۰۶/۲۸
ممنون از لطفتون
نویسنده: مومني موگويي
زمان: ۱۳:۰۴:۰۰ - تاریخ: ۱۳۹۲/۰۶/۲۸
سلام دوست عزيز بنده يه سوال ديگه هم دارم مهمترين و كاربردي ترين مباحث تو php چه مباحثي هستند كه بنده اونا رو بيشتر بخونم آيا راجع به امنيت وب كتاب جامع و خوبي سراغ دارين اگر امكان داره ميشه معرفي كنيد با تشكر موفق باشيد انشالله
پاسخ: 
سلام
PHP یک زبان برنامه نویسی است و یک زبان برنامه نویسی مجموعه ای از دستورات و مباحث مختلف را دربر می گیرد که برای حرفه ای بودن، تسلط بر بیشتر آنها لازم است، به هر صورت مباحث مهم تر در PHP را می توان بحث کار با آرایه ها و توابع مربوط به آرایه، توابع مربوط به مدیریت فایل، حلقه ها، روش های مختلف اتصال به دیتابیس، کار با تاریخ و زمان و نهایتا شی گرائی نام برد.
در مورد معرفی کتاب، متاسفانه منبع کاملی در این زمینه مد نظر نداریم، باید (در وب یا در بازار) جستجو کنید.
نویسنده: مومني موگويي
زمان: ۰۹:۰۴:۵۰ - تاریخ: ۱۳۹۲/۰۶/۲۹
ممنون از لطفتون دوست گرامي
نویسنده: مومني موگويي
زمان: ۱۹:۵۳:۲۴ - تاریخ: ۱۳۹۲/۰۷/۲۰
سلام خسته نباشيد ميشه تابع
error_log()
را با مثال توضيح بدين
پاسخ: 
سلام
تابع error_log برای مدیریت خطاها به طور مثال برای ذخیره در یک فایل log مربوط به error ها یا ارسال آن از طریق ایمیل است، معمولا این تابع دو یا سه آرگومان دارد که برای تنظیمات مختلف به کار می رود، به فرض اگر بخواهیم خطای رخ داده در فایل ذخیره شود:
if($error == TRUE){
error_log("Error-Code:222!", 0);
}
یا اگر بخواهیم خطا را به ایمیل ارسال کنیم:
error_log("Error!", 1,  "admin@example.com");
اطلاعات بیشتر:
http://php.net/manual/en/function.error-log.php
نویسنده: مومني موگويي
زمان: ۱۵:۴۵:۲۹ - تاریخ: ۱۳۹۲/۰۷/۲۲
سلام ممنون
نویسنده: مومني موگويي
زمان: ۱۳:۳۳:۳۸ - تاریخ: ۱۳۹۲/۰۷/۲۳
سلام خسته نباشيد ببخشيد كاربرد @ تو php چيه ممنون از جوابتون و لطفتون
پاسخ: 
سلام
در صورت استفاده در ابتدای متغیرها، به معنی نادیده گرفتن خطاها یا هشدارهایی است که از آن متغیر ممکن است گرفته شود (معمولا در حالت آگاهانه از آن استفاده می شود، به فرض برای متغیری که بعد از ارسال فرم مقداردهی می شود، جهت جلوگیری از پیام Notice: Undefined Variable).
paged صفحه 1 از 3




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

8 × 5
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...