amir
3 سال پیش توسط amir مطرح شد
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


ثبت پرسش جدید
مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش آپدیت شد
-1

من برای مفهوم تر شدن 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 3 سال پیش مطرح شد
-1

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


amir
تخصص : بک اند و فرانت اند
@behzadi 3 سال پیش مطرح شد
0

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


مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش آپدیت شد
-1

من برای مفهوم تر شدن 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
}

amir
تخصص : بک اند و فرانت اند
@behzadi 3 سال پیش آپدیت شد
-1

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


مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش آپدیت شد
-1

@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
تخصص : بک اند و فرانت اند
@behzadi 3 سال پیش مطرح شد
0

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


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

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