تالار گفتمان nCIS.ir

نسخه‌ی کامل: گرفتن value های مشترک دو آرایه
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان. من میخوام 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 رو بدست بیارم درنهایت، چون همونطوری که گفتم ایندکس های اون به صفر نزدیکتر هستن و یکجورایی ارزش بیشتری دارن برام.

چطوری میتونم این کار رو بکنم؟
$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 اعضای دو آرایه ای که شما گفته بودید رو به ترتیب بر اساس وزنشون خواهند داشت که کلید های آرایه اعضای مشترک دو آرایه و مقدار اون کلید هم وزنش خواهد بود.