RightClick

RightClick

 
امروز 16 بهمن 1390 14:04

همه زمانها UTC + 3:30 ساعت هستند




ارسال مبحث جديد پاسخ به مبحث [ 9 پست ] 
نويسندهپيغام
 موضوع پست: آرایه ها - قسمت اول
پستارسال شده در: 14 شهريور 1387 11:22 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 541
محل سکونت: مشهد مقدس
سلام،
خسته نباشيد
آرايه نوع دادهاي خاص است که مي توان آن را به يک ظرف از مقادير تشبيه کرد.
آرايه مي توند مجموعه اي از اعداد،رشته ها،مولفه ها،اشاره گرها و حتي آرايه ديگري باشد.برخلاف برخي ديگر از زبان هاي برنامه نويسي مقادير آرايه ها مي توند به صورت مختلط باشد.به طور مثال يک آرايه مي تواند به طور همزمان اعداد،رشته و مولفه ها را ذخير کنيد.
به هر يک از عضو هاي يک آرايه يک عنصر از آن آرايه مي گويند.
آرايه چند بعدي:
هنگامي که عنصر يک آرايه خود يک آرايه باشد به آن آرايه آرايه چند بعدي مي گويند.
کليدها:
کليدها را مي تون به نام متغيير ها تشبيه کرد که از طريق آنها مي توان مقادير مربوطه دسترسي پيدا کرد.
اگه نوع کليد رشته باشد به آن آرايه آرايه انجمني مي گويند.
تغغير پذيري:
برخلاف زبان هايي مانند جاوا و ++C در زبان PHP نيازي به مشخص کردن تعداد عناصر آرايه نمي باشد و آرايه ها مي توانند بر اساس نياز بزرگ يا کوچک شوند.به اين خاصيت تغيير پذيري آرايه مي گويند.

يکي ديگر از ويژگي هاي آرايه هاي PHP عدم نياز به تعريف نوع داده مي باشد.در واقع اين خاصيت موجب افزايش انعطاف پذيري آرايه ها شده است.
براي ايجاد آرايه از تابع array استفاده مي شود.
براي اين منظور به صورت زير عمل مي کنيم:
کد:
$rsh = array('islamic','republic','of','Iran');
ت
وضيحات:
rsh متغيري اختياري است.
islamic و republic و of و Iran چهار عنصر دلخواه هستند که مي توان تعداد آنها را تغيير داد.
کليدهاي آرايه چون تعريف نشده اند به طور پيشفرض عدد مي باشند.
--
براي دستيابي به مقادير آرايه به صورت زير عمل مي کنيم:
کد:
$rsh[0];

براي واضح بودن مثال:
کد:
echo $rsh[0];

که خروجي اين مثال با توجه به عناصر موجود islamic خواهد بود.
براي افزودن يک عنصر جديد به صورت زير عمل مي کنيم:
کد:
$rsh[4]= 'Dot';

كه Dot مقدار دلخواه ما مي باشد.
براي نمايش تمامي مقادير يک آرايه از print_r استفاده مي کنيم:
کد:
print_r($rsh);

ايجاد آرايه هاي انجمني:
همانطور که توضيح داده شد آرايه هاي انجمني داراي کليدهايي از نوع رشته هستند.در واقع مزيت آرايه هاي انجمني ايجاد يک ارتباط معنايي بين کليد و عناصر مي باشد.
مثلا:
کد:
$rsh= array('name'=>'reza','gener'=>'male');
echo $rsh['name'];
echo $rsh['gener'];

براي شمارش تعداد عاصر يک آرايه از count استفاده مي کنيم.
کد:
echo  count($rsh);

براي دستايابي به تمام عناصر آرايه ها مي توان از حلقه هاي تکرار استفاده کرد:
کد:
<?php
$rsh = array('islamic','republic','of','Iran');
$counts = count($rsh);
for($i=0;$i<$counts;$i++){
echo "$rsh[$i] ";
}
?>

و اگر آرايه ما از نوع آرايه هاي انجمني باشه بايد از foreach استفاده کنيم:
کد:
<?php
$rsh= array('name'=>'reza','gener'=>'Male','Mina'=>'Female','Mohammad'=>'Male');
foreach ($rsh as $Key => $value)
{
echo "The value of $Key is : $value";
}
?>

آرايه هاي چند بعدي:
همونطور که گفتم اگه اگر عناصر يک آرايه خود آرايه باشند به آن آرايه، آرايه چند بعدي مي گويند.
مثال:
کد:
<?php
$rsh= array();
$rsh[0] = array('CMS'=>'reza','PHP'=>'SH');
$rsh[1] = array('URL'=>'http://Rightclick.ir','Title'=>'.: | Rightclick |:.');
$url = $rsh[1]['URL'];
$title = $rsh[1]['Title'];
echo 'Find nice articles on <a href='.$url.'>'.$title.'</a>';
?>

که فکر نکنم نياز به توضيح نداشته باشه.
تغيير مولفه هاي جاري:
با استفاده از توابع current,next,prev,reset,end مي توان در آرايه حر کت کرد.
reset : اين تابع اشاره گر را به اولين عنصر آرايه مي برد و مقداري را برنمي گرداند.
next : اين تابع اشاره گر را به عنصر بعدي مي برد و در صورت وجود مقدار آن را برمي گرداند در غير اين صورت false بر گردانده مي شود.
prev : اين تابع هم که عکس next عمل مي کند.
current : اين تابع عنصر جاري را بر مي گرداند.
end : اين تابع به آخرين عنصر موجود اشاره مي کند.
مثال:
کد:
<?php
// Even nums up to 20
$even_num = array('2','4','6','8','10','12','14','16','18','20');
reset($even_num);
//echo prev($even_num).'<br>';
echo next($even_num).'<br>';
echo next($even_num) .'<br>';
echo prev($even_num) .'<br>';
reset($even_num);
echo end($even_num);
?>

قصد داشتم تمام مطالب رو يک جا بگم.ديدم هم خسته کننده و هم طولاني مي شه وبعلاوه مجبور مي شم مثال کمتري بزنم براي همين در يک تاپيک مجزا قسمت بعدي رو بزودي ارسال مي کنم.در ضمن براي تيتر ها هم از کتاب کمک گرفتم.
موفق باشيد :wink:
التماس دعا :kuss:
خدانگهدار

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
 موضوع پست: دستت در نكنه
پستارسال شده در: 14 شهريور 1387 12:24 
آفلاين
اگه نباشه جاش خاليه
اگه نباشه جاش خاليه
نماد کاربر

تاريخ عضويت: 30 مرداد 1387 13:22
پست ها : 100
سلام مرسي كه داري كمك ميكنيد و لي اگه مشكلات سي ام اس خبري رفع كني فكر كنم خيلي بهتر باشه يعني زود تر :D
راستي در مورد ارسال ايميل هم من ري پلي كردم يك نگاه بنداز
ممنون


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها
پستارسال شده در: 15 مرداد 1389 19:59 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 541
محل سکونت: مشهد مقدس
در ادامه ميخوام با يك تابع فوق العاده ارزشمند در آرايه شروع كنم.
اين تابع در كد نويسي يكي از شيووه هاي متداول من شده و خيلي برام كارايي داشته.
فرض كنيد در فرم ورودي تون 10 الي 20 فيلد داشته باشيد و همه مقادير ارسال با توجه به اينكه با از نظر وجود كاراكتر هاي مخرب (يا ناسازگار يا هر اسمي!) بررسي بشند تا جلوي برخي روش هاي متداول نفوذ مانند sql_injection و ... گرفته بشه.
كد زير رو ببنيد:
کد:
$name = safe($_POST['name']);
$family= safe($_POST['family']);
$test= safe($_POST['test']);
$php= safe($_POST['php']);
$net= safe($_POST['net']);
$wht= safe($_POST['wht']);
$user= safe($_POST['user']);
$pass= safe($_POST['pass']);

در اينجا تابع safe يك تابع user defined هست يعني خودم براي خودم تعريف كردم . مثلا ميتونه به اين صورت باشه:
کد:
function safe($value,$type='0'){
$value = mysql_real_escape_string( $value );
$value = stripslashes( trim($value) );
   $value = htmlspecialchars($value);
return $value;
}

ديديد كه براي تك تك متغير ها مجبور شدم،يك تابع رو به كار ببندم و كلي دردسر ، و تازه چون نميخواستم توضيح طولاني بشه يك تابع هم (safe) به كار بردم وگرنه بايد براي هر كدوم از متغير ها 3 الي 4 خط كد مي نوشتم.
همونطور كه مي دونيم متدهاي POST و GET آرايه هستند.بنابراين ما با توابع مفيد آرايه هاي مي تونيم روشون جولان بديم!
بريم سر وقت اصل مطلب:
[COLOR="Red"]تابع array_walk[/COLOR]
اين تابه 2 ورودي داره.اولي نام آرايه و دومي نام تابع.
ساختار :
کد:
bool array_walk  (  array &$array  ,  callback $funcname  [,  mixed $userdata  ] )

نقل قول از manula php.net
نقل قول:
Applies the user-defined function funcname to each element of the array array.

array_walk() is not affected by the internal array pointer of array. array_walk() will walk through the entire array regardless of pointer position.
[/QUOTE]

در واقع اين تابع همونطور كه از اسمش پيداست روي ْآرايه ما قدم ميزنه ! و كليد و مقدار هر عنصر آرايه رو از يك تابع شخصي ميگذرونه و نتيجه رو جايگزينش مي كنه.
و اما استفاده اي كه من از اين تابع كردم:
کد:
function safemini(&$value,$key){
$value = safe($value);
return $value;
}
array_walk($_POST,'safemini');

تابع safemini كه در برنامه خودم بود رو كمي ساده تر كردم،در واقع اين باز نوعي خلاقيت در كد نويسي محسوب ميشه كه چرا تابع جديدي ايجاد شده...مثلا گاهي لازم هست در بعضي فرم هامون مقادير html هم بپذيريم از كاربر پس ، تو اين تابع جديد ميشه يك شرط بذاريم اگه مقدار key فلان بود يا فلان چيزو توش داشت ديگه كاريش نداشته باش يا يك طور ديگه باهاش رفتار بشه و ...
استفاده ديگه اي كه از اين تابع داشتم در صفحات ajax بود!اگر با ajax كار كرده باشيد حتما ميدونيد موقع ارسال مقادير اگه فرم شامل برخي كاراكتر هاي خاص باشه js خطا ميده ! چون ساختارش بهم ميريزه و حقم داره ! پس توي js ما مقادير رو خنصي مي كنيم و مثلا + رو با يك مجمموعه كاراكتر دلخواه جايگزين مي كنيم.و بعد مي فرستيم . مثلا من + رو با **rsh** جايگزين مي كنم و بعد سمت php مجددا **rsh** رو با + عوض مي كنم.اين كار هم بايد براي تك تك مقادير ارسالي در صفحات ajax رعايت بشه پس با هيمن روش خيلي از حجم كد كاسته ميشه...
ادامه دارد!

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها - قسمت اول
پستارسال شده در: 15 مرداد 1389 23:01 
آفلاين
اگه نباشه جاش خاليه
اگه نباشه جاش خاليه
نماد کاربر

تاريخ عضويت: 16 اسفند 1386 13:12
پست ها : 248
محل سکونت: بابل
بسیار عالی بود آموزش های شما خیلی جالب هستش واقعا تبریک می گم به این هوش شما
:wink:

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

شرمنده کارم از یک جمله گذشت :evil:

_________________
بازارکار و خبرگذاری بابلی
http://www.baboli.ir


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها - قسمت اول
پستارسال شده در: 16 مرداد 1389 3:29 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 541
محل سکونت: مشهد مقدس
mortezaa نوشته است:
بسيار عالي بود آموزش هاي شما خيلي جالب هستش واقعا تبريک مي گم به اين هوش شما
:wink:

اين جمله من در مورد آرايه بگم
اگه هر زبوني داريد برنامه نويسي مي کنيد حتما با ارايه ها کار کنيد چون باعث ميشه کد نويسي دقيق تر و کم حجم تر نوشته بشه و خودش باعث سرعت بخشيدن در برنامه ها ميشه

شرمنده کارم از يک جمله گذشت :evil:

مرسي مرتضي جان،فقط اون تيكه اولش رو چرا اينقدر كتابي و با اغراق گفتي :mrgreen:

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها - قسمت اول
پستارسال شده در: 19 مرداد 1389 16:29 
آفلاين
داره خودمونی میشه
داره خودمونی میشه

تاريخ عضويت: 9 خرداد 1389 22:39
پست ها : 37
سلام.ضمن تشکر از شما. فرض کنيم اطلاعاتمان مي خواهد در فرمي مثل فرم test.html وارد شود. و در اسکريپت test.php پردازش شود.
اين فرم چه اشکالي دارد که نمي تواند آرايه رو دريافت و پردازش کند ؟
متشکرم
test.html:
کد:
<html>
<body>
<form method="POST" action="test.php">
<table border="1"  style="border-collapse: collapse" bordercolor="#111111" width="30%">
    <tr>
      <td width="33%">name</td>
      <td width="33%">job</td>
    </tr>
    <tr>
      <td width="33%"><input type="text" name="Yourname[]" size="20"></td>
      <td width="33%"><input type="text" name="job[]" size="20"></td>
    </tr>
    <tr>
      <td width="33%"><input type="text" name="Yourname[]" size="20"></td>
      <td width="33%"><input type="text" name="job[]" size="20"></td>
    </tr>
  </table>
  <p><input type="submit" value="Submit" ><input type="reset" value="Reset" ></p>
</form>

</body>

</html>

test.php
کد:
<?php
$Data =array( 'name'=>($_POST['Yourname']),'job'=>($_POST['job']));
foreach($Data  as $key=>$value)
{
   echo "$key:$value";
}
?>

متشکرم


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها - قسمت اول
پستارسال شده در: 19 مرداد 1389 17:35 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 541
محل سکونت: مشهد مقدس
سلام،خواهش مي كنم.
نيازي به ايجاد آرايه جديد نيست.
هميشه براي عيب يابي و درك بهتر تو آرايه ها از print_r استفاده مي كنم.
کد:
<?php
$i = 0;
foreach($_POST['Yourname']  as $key=>$value)
echo 'The person with name: <b>'.$value.'</b> has the following job: <b>'.$_POST['job'][$i++].'</b><br>';
?>

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها - قسمت اول
پستارسال شده در: 23 مرداد 1389 6:20 
آفلاين
داره خودمونی میشه
داره خودمونی میشه

تاريخ عضويت: 9 خرداد 1389 22:39
پست ها : 37
سلام و سپاس بیکران.


بالا
 مشخصات  
 
 موضوع پست: Re: آرايه ها - قسمت اول
پستارسال شده در: 5 شهريور 1389 18:08 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 8 تير 1387 16:57
پست ها : 541
محل سکونت: مشهد مقدس
خلاصه وار و با مثال ادامه ميدم :)
تابع unset :
حذف يك element يا كل آرايه:
مثال
کد:
<?php
$test = array('site'=>'wht','lang'=>'php','music'=>'light');
//حذف فقط يك المان
unset($test['music']);
//حذف كل آرايه
unset($test);
?>

تابع array_keys:
اين تابع يك آرايه رو ميگيره و يك آرايه جديد رو كه شامل اسم كليدهاي آرايه داده شده هست رو بر مي گردونه.
به مثال توجه كنيد:
کد:
<?php
$test = array('site'=>'wht','lang'=>'php','music'=>'light');
print_r(array_keys($test));
?>
//خروجي
Array
(
[0] =>  site
[1] =>  lang
[1] =>  music
)

تابع array_keys:
شمابه تابع array_keys هست با اين تفاوت كه مقادير رو بر مي گردونه نه كليدها.
کد:
<?php
$test = array('site'=>'wht','lang'=>'php','music'=>'light');
print_r(array_values($test));
?>
//خروجي
Array
(
[0] =>  wht
[1] =>  php
[1] =>  light
)

_________________
خود پسندی مانع آموختن است.:: امام علی (ع) ::.
سیستم جامع و هوشمند افزایش آمار مجیک -
شبكه آموزش پارسيان - سیستم مدیریت محتوای ایرانی راش
عشق من = rightclick


بالا
 مشخصات  
 
نمايش پست ها از پيشين:  مرتب سازي بر اساس  
ارسال مبحث جديد پاسخ به مبحث [ 9 پست ] 

همه زمانها UTC + 3:30 ساعت هستند


چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون کاربران عضو شده و 0 مهمان


شما نمي توانيد مبحث جديدي در اين انجمن ايجاد کنيد
شما نمي توانيد به مباحث در اين انجمن پاسخ دهيد
شما نمي توانيد پست هاي خود را در اين انجمن ويرايش کنيد
شما نمي توانيد پست هاي خود را در اين انجمن حذف کنيد
شما نمي توانيد فايل هاي پيوست در اين انجمن ارسال کنيد

جستجو براي:
پرش به:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Template made by DEVPPL - Persian Translation By : www.Maghsad.com