PDA

View Full Version : سوال: دستور foreach



hercool
یک شنبه 01 خرداد 1390, 11:56 صبح
سلام خدمت دوستان
ممنون میشم در رابطه با دستور foreach راهنماییم کنید دقیقا چکار می کنه و چه پارامتر هایی رو می پذیره

Mahdi.Spirit
یک شنبه 01 خرداد 1390, 12:18 عصر
سلام خدمت دوستان
ممنون میشم در رابطه با دستور foreach راهنماییم کنید دقیقا چکار می کنه و چه پارامتر هایی رو می پذیره
شبيه حلقه for فقط انديس نداره و تمام محتويات مثلا يك آرايه رو پيمايش ميكنه
اطلاعات بيشتر:
http://php.net/manual/en/control-structures.foreach.php

hercool
یک شنبه 01 خرداد 1390, 12:53 عصر
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>


حالا سوالم اینه که دقیقا منظور as چی هست ؟
چطور می تونه مقدار رو unset کنه زمانی که مقدار value ارجاعی هست؟
در جایی دستور شرطی => میزارن این دقیقا به چه معنا است

eshpilen
یک شنبه 01 خرداد 1390, 13:14 عصر
حالا سوالم اینه که دقیقا منظور as چی هست ؟as رو میتونید بخونید «بعنوان». یا در اینجا میتونیم بگیم «تحت».

چطور می تونه مقدار رو unset کنه زمانی که مقدار value ارجاعی هست؟خب درواقع هم مقدار متغییر (عنصر آرایه) رو unset نمیکنه، بلکه خود متغییر $value رو از بین میبره و نه متغییری که متغییر $value بهش اشاره میکنه. اگر این کار رو نکنه چون متغییر $value هنگام خروج از حلقه به آخرین عنصر آرایه اشاره میکنه، وقتی شما مقداری رو بهش اختصاص بدید درواقع این مقدار در آخرین عنصر آرایه ذخیره میشه.
بطور مثال:

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
$value=300;
unset($value); // break the reference with the last element
print_r($arr);
?>
الان چون قبل از unset کردن، مقدار 300 رو به $value اختصاص دادم باعث میشه که مقدار آخرین عنصر آرایه برابر با 300 بشه.

در جایی دستور شرطی => میزارن این دقیقا به چه معنا است ما رو گرفتی؟ :متفکر:

hercool
یک شنبه 01 خرداد 1390, 13:22 عصر
میشه گفت خود value ارجاعی خودش بعنوان یک اندیس حساب میشه یعنی اگه ارایه ما 4 تا عنصر داره مقدار value برابر 3 هست و برای متوقف کردن اندیس value می تونیم اونو برابر یا بزرگتر از یک مقدار دیگه بزاریم
:لبخند:

eshpilen
یک شنبه 01 خرداد 1390, 13:40 عصر
متوجه نشدم چی میگی :متفکر: