راکت
حل شده

جمع اعضای ارایه ها

6 پاسخ

سلام دوستان من متغیری به نام $utput دارم که به شکل چند ارایه تو درو تو هستش الان میخام هر سه عضوی از این ها رو جمعه کنه یعنی مثلا ابتدا 0 رو از ارایه اول و 0 رو از ارایه دوم و صفر رو از ارایه سوم جمع کنه بعد بره سراغه 0 از ارایه اول صفر از ارایه دوم و 4 از ارایه اخر همینطور ادامه پیدا کنه تا همه اعضای ارایه ها این اتفاق براشون بیفته و برام چاپشون کنه ممنون میشم راهنمایی کنید !

$output = [2=> [ '0' , '2' , '4' , '6' , '8' , '10'] , 3=>['0' , '3' , '6' , '9'] , 4=>['0' , '4' , '8']]

@farhadi @mehranmarandi90 @Alimotreb @mobinasattari7 @mhyeganeh @ali.bayat @websaz @hesammousavi @mehdi.mahdavi97 @ajdar9667

ثبت پرسش جدید

پاسخ‌ها

6
مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

بهترین پاسخ

من برای مفهوم تر شدن key ها رو یه رشته از ایندکس ها قرار دادم که الزامی نیست میتونید فقط ایندکس خالی قرار بدید

$array = [
['0', '2', '4', '6', '8', '10'],
['0', '3', '6', '9'],
['0', '4', '8']
];
$array0 = $array[0];
for ($a=1;$a<count($array);$a++){
    $array1 = $array[$a];
    $array2=[];
    foreach ($array0 as $key0 => $val0){
        foreach ($array1 as $key1 => $val1){
            $array2[$key0."-".$key1]=$val0+$val1;
        }
    }
    $array0 = $array2;
}
echo json_encode($array2);
die();

یه همچین خروجی میده:

{
   "0-0-0":0,
   "0-0-1":4,
   "0-0-2":8,
   "0-1-0":3,
   "0-1-1":7,
   "0-1-2":11,
   "0-2-0":6,
   "0-2-1":10,
   "0-2-2":14,
   "0-3-0":9,
   "0-3-1":13,
   "0-3-2":17,
   "1-0-0":2,
   "1-0-1":6,
   "1-0-2":10,
   "1-1-0":5,
   "1-1-1":9,
   "1-1-2":13,
   "1-2-0":8,
   "1-2-1":12,
   "1-2-2":16,
   "1-3-0":11,
   "1-3-1":15,
   "1-3-2":19,
   "2-0-0":4,
   "2-0-1":8,
   "2-0-2":12,
   "2-1-0":7,
   "2-1-1":11,
   "2-1-2":15,
   "2-2-0":10,
   "2-2-1":14,
   "2-2-2":18,
   "2-3-0":13,
   "2-3-1":17,
   "2-3-2":21,
   "3-0-0":6,
   "3-0-1":10,
   "3-0-2":14,
   "3-1-0":9,
   "3-1-1":13,
   "3-1-2":17,
   "3-2-0":12,
   "3-2-1":16,
   "3-2-2":20,
   "3-3-0":15,
   "3-3-1":19,
   "3-3-2":23,
   "4-0-0":8,
   "4-0-1":12,
   "4-0-2":16,
   "4-1-0":11,
   "4-1-1":15,
   "4-1-2":19,
   "4-2-0":14,
   "4-2-1":18,
   "4-2-2":22,
   "4-3-0":17,
   "4-3-1":21,
   "4-3-2":25,
   "5-0-0":10,
   "5-0-1":14,
   "5-0-2":18,
   "5-1-0":13,
   "5-1-1":17,
   "5-1-2":21,
   "5-2-0":16,
   "5-2-1":20,
   "5-2-2":24,
   "5-3-0":19,
   "5-3-1":23,
   "5-3-2":27
}
مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

یعنی جمع تمام جایگشت های ممکن؟ و در نهایت 72 عدد باید خروجی بده؟

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

@mehranmarandi90 تعداد حالت هاش برابر ضرب تعداد اعضای ارایه ها که همون طور که گفتین 72 تا چون سه تا ارایه داریم پس سه تا جای خالی داریم برای هر جای خالی هم به تعداد ارایه اون میتونیم عضو بزاریم یعنی 346 که همون 72 میشه

شاید پاسخ شما همین‌جا باشد

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

@mehranmarandi90 سلام مهران جان نگاه کن من این مد رو به طور کلی میخواستم مثلا 5 تا ارایه دیگه هم اضافه می کردم بهم جواب بده شما اومدی سه تا foreach زدی ولی با بیشتر شدن ارایه ها هی این تهداد بیشتر میشه پس باید تابع بازگشتی بریم(Callback func) که خداروشکر خودم نوشتمش اگر کسی لازم داشت پیام بده کداش روم بفرستم

مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

@behzadi
😶🤨
نه دیگه، حداقل یه بار تستش میکردی ! 😉
برای هر تعداد آرایه جواب میده همین
مثلا برای این 4 تا آرایه (و هر تعداد دیگه)

        $array = [
            ['0', '2'],
            ['2', '1'],
            ['0', '3'],
            ['0', '4']
        ];

این خروجی رو تولید میکنه

array:16 [▼
  "0-0-0-0" => 2
  "0-0-0-1" => 6
  "0-0-1-0" => 5
  "0-0-1-1" => 9
  "0-1-0-0" => 1
  "0-1-0-1" => 5
  "0-1-1-0" => 4
  "0-1-1-1" => 8
  "1-0-0-0" => 4
  "1-0-0-1" => 8
  "1-0-1-0" => 7
  "1-0-1-1" => 11
  "1-1-0-0" => 3
  "1-1-0-1" => 7
  "1-1-1-0" => 6
  "1-1-1-1" => 10
]
amir
amir
@behzadi

تخصص: بک اند و فرانت اند

@mehranmarandi90 شرمنده یه کدی رو اشتباه دیدم

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام