ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پیدا کردن بیشترین تکرار در آرایه ای از آرایه ها



mehran-b
August 14th, 2017, 03:29
سلام بر دوستان و اساتید

به یه مشکلی برخوردم که مطرح میکنم لطفا اساتید یه تاملی روش بکنند.

یه آرایه دارم به شکل زیر:





$var = array(
array(10,20,30,40,50,60,70,75,79,86,104),
array(51,48,30,74,98,103),
array(42,4587,9647,30,756,496),
array(87459,741529,86325,19632),
);

در آرایه بالا میخوام عددی که بیشترین تکرار رو داشته پیدا کنم که فک کنم توی مثالی که زدم میشه عدد 30.

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

پیشاپیش تشکر بابت راهنمایی هاتون

T.Toosi
August 14th, 2017, 03:43
$var = array(
array(10,20,30,40,50,60,70,75,79,86,104),
array(51,48,30,74,98,103),
array(42,4587,9647,30,756,496),
array(87459,741529,86325,19632),
);
$result = array_reduce($var, 'array_merge', array());
$a = array_count_values($result);
$max = array_search(max($a), $a);
var_dump($max);

mehran-b
August 14th, 2017, 03:46
$var = array(
array(10,20,30,40,50,60,70,75,79,86,104),
array(51,48,30,74,98,103),
array(42,4587,9647,30,756,496),
array(87459,741529,86325,19632),
);
$result = array_reduce($var, 'array_merge', array());
$a = array_count_values($result);
$max = array_search(max($a), $a);
var_dump($max);

بسیار عالی.
حالا اگر دو عدد تعداد تکرارشون یکی بود این کد جواب میده؟

T.Toosi
August 14th, 2017, 04:07
بسیار عالی.
حالا اگر دو عدد تعداد تکرارشون یکی بود این کد جواب میده؟

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


$var = array(
array(10,20,30,40,50,60,70,75,79,86,104,31,41),
array(51,48,30,74,98,103,31),
array(42,4587,9647,30,756,496,31),
array(87459,741529,86325,19632,41,41),
);
$result = array_reduce($var, 'array_merge', array());
$a = array_count_values($result);
$max = array_search(max($a), $a, false);
$key = $a[$max];
$data= [];
foreach($a as $k=>$v) if($v === $key) $data[] = $k;
var_dump($data);