array_reduce و array_walk - آزمون آنلاین پی اچ پی php
array_reduce: تبدیل آرایه به یک مقدار واحد
تابع array_reduce توی PHP مثل اون آدمیه که همیشه می خواد همه چیزو خلاصه کنه. یه آرایه می دی بهش، یه تابع هم می دی، اونم با حوصله میاد همه عناصر رو یکی یکی می گیره و یه مقدار نهایی تحویل می ده.

مثلا اگه بخوای مجموع یا ضرب همه عناصر رو حساب کنی، این تابع می درخشه. نمونه هایی که خودم تست کردم و جواب گرفتم:
// جمع عناصر آرایه $result = array_reduce([1, 2, 3, 4], function($carry, $item) { return $carry + $item; }, 0); echo $result; // خروجی: 10
// ضرب عناصر آرایه $result = array_reduce([2, 3, 4], function($carry, $item) { return $carry * $item; }, 1); echo $result; // خروجی: 24
array_walk: قدم زدن روی آرایه با سبک خاص
تابع array_walk یه جورایی مثل راه رفتن روی آرایه ست، ولی با کلاس. می تونی روی هر عنصر یه عملیات انجام بدی، بدون اینکه ساختار آرایه رو تغییر بدی.
مثلا چاپ کردن، تغییر دادن مقدار، یا حتی اضافه کردن یه افکت خاص. یه مثال ساده ولی کاربردی:
$names = ["Ali", "Sara", "Mehdi"]; array_walk($names, function(&$value, $key) { $value = strtoupper($value); }); print_r($names); // خروجی: ["ALI", "SARA", "MEHDI"]
مقایسه array_reduce و array_walk
یه جدول کوچیک برات ساختم که فرق این دوتا رو قشنگ نشون بده. چون توی آزمون، ممکنه دقیقا همینو ازت بپرسن!
| ویژگی | array_reduce | array_walk |
|---|---|---|
| نوع خروجی | یک مقدار نهایی | آرایه تغییر یافته |
| تغییر مستقیم آرایه | خیر | بله (با &) |
| کاربرد اصلی | خلاصه سازی | اعمال عملیات روی هر عنصر |
آزمون: مهارتت رو محک بزن
اگه اینا برات جالب بودن، توی آزمون array_reduce و array_walk شرکت کن. باهاش یاد می گیری چطور آرایه ها رو مثل یه حرفه ای مدیریت کنی، توابع callback بنویسی، و حتی توی مصاحبه های کاری بدرخشی. قول می دم سوالاش هم خسته کننده نیستن، یه کم بازی گونه ان، یه کم چالش برانگیز، و یه کم هم اذیت کننده (شوخی کردم، فقط یه کم!).
چند تمرین برای گرم شدن
۱. یه آرایه از اعداد بساز و با array_reduce میانگینش رو حساب کن
۲. یه لیست از نام ها داشته باش و با array_walk به هر کدوم یه پسوند اضافه کن
۳. یه آرایه از قیمت ها بگیر و با array_reduce مجموع تخفیف شده شون رو حساب کن
// تمرین ۲ $names = ["Reza", "Neda"]; array_walk($names, function(&$value) { $value .= " - student"; }); print_r($names); // خروجی: ["Reza - student", "Neda - student"]