رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
گرفتن value های مشترک دو آرایه
#1
سلام دوستان. من میخوام value های مشترک دو آرایه رو بگیرم که همونطور که میدونید با تابع array_intersect کاری نداره، ولی من میخوام علاوه بر موارد مشترک اونایی که در ایندکس های "به صفر نزدیکتر" هستن رو مرتب کنم، یعنی یک جورایی به value ها وزن بدم.
شما فرض کنید من این دو آرایه زیر رو دارم:

$array1 = array("d","m", "b", "o", "l");
$array2 = array("g","b", "n", "k", "d");
همونطور که میبنید value های مشترک مورد d و b هستش. ولی برای d توی ایندکس 0 و 4 هستش، ولی برای b توی ایندکس های 1 و 2 هستش. من میخوام b رو بدست بیارم درنهایت، چون همونطوری که گفتم ایندکس های اون به صفر نزدیکتر هستن و یکجورایی ارزش بیشتری دارن برام.

چطوری میتونم این کار رو بکنم؟
پاسخ
تشکر شده توسط:
#2
$array1 = array("d","m", "b", "o", "l");
$array2 = array("g","b", "n", "k", "d");
$weights = array();
$temp= array();
foreach ($array1 as $key => $val) {
   $temp[$val] = $key;
}
foreach ($array2 as $key => $val) {
   if (isset($temp[$val])) {
       $weights[$val] = abs($temp[$val] - $key);
   }
}
asort($weights);

foreach ($weights as $val => $w) {
    echo $val . ' => ' . $w;
}


در نهایت آرایه ی weights اعضای دو آرایه ای که شما گفته بودید رو به ترتیب بر اساس وزنشون خواهند داشت که کلید های آرایه اعضای مشترک دو آرایه و مقدار اون کلید هم وزنش خواهد بود.
پاسخ
تشکر شده توسط: php




کاربران در حال بازدید این موضوع: 1 مهمان