تغییر مقدار یک آیتم در حلقه for each
سلام
من یک آرایه دارم به شکل زیر:
$myarray = array(
'Name' => 'Mahdi',
'Family' => 'Poya',
'Father' => 'Mohammad',
'addres' => 'Semnan',
);
foreach($myarray as $row=>$target){
echo '<pre>' . print_r($row,true) . '</pre>';
$row['Name'] = 'Hi, ' . $row['Name'];
echo '<hr>';
echo '<pre>' . print_r($target,true) . '</pre>';
}
حالا قصد دارم هنگامی که تو حلقه for each بتونم مقادیر رو تغییر بدم.
مثلا بتونم تو حلقه بگم که تمامی ایندکس های Name یه بلایی سرش بیاد به شکل زیر:
$row['Name'] = 'Hi, ' . $row['Name'];
درود بعد از بررسی کد متوجه شدم شما کلا قضیه حلقه Foreach رو بد متوجه شدید. وقتی این حلقه رو برای یک آرایه مثل myarray استفاده میکنید یعنی در هر بار اجرای حلقه، روی یکی از مقدارهای تابع، فانکشن رو اجرا میکنید. منظورم این هست که اگر مثلا آرایه myarray به این صورت باشه:
$myarray = array(
array( 'Name' => 'Mahdi', 'Family' => 'Poya', 'Father' => 'Mohammad', 'addres' => 'Semnan',
),
array( 'Name' => 'Mehrdad', 'Family' => 'Yousofi', 'Father' => 'Yousof', 'addres' => 'XYZ',
) );
بار اول فانکشن روی آرایهای اجرا میشه که اسم شخص مهدی هست و بار دوم آرایهای که اسم شخص مهرداد و دقیقا اشتباه شما اینجا بوده چون در کد شما در هربار اجرا یک String ارسال میشده و تابعی استفاده میکردید که مربوط به آرایه بوده و خطا ایجاد میشده.
به علاوه از حالت Key => Value زمانی استفاده میشه کرد که هر عضو آرایه یک Key داشته باشه که فکر نمیکنم کدی که مد نظر شما هست برای هر آرایه قرار باشه یک Key در نظر گرفته بشه پس این قسمت هم از نظر من اضافی هست و کد نهایی به صورت زیر میشه:
$myarray = array(
array(
'Name' => 'Mahdi',
'Family' => 'Poya',
'Father' => 'Mohammad',
'addres' => 'Semnan',
),
array(
'Name' => 'Mehrdad',
'Family' => 'Yousofi',
'Father' => 'Yousof',
'addres' => 'XYZ',
)
);
foreach($myarray as $row){
echo '<pre>' . print_r($row,true) . '</pre>';
$row['Name'] = 'Hi, ' . $row['Name'];
echo '<hr>';
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .