Учитывая следующий массив:Учитывая массив целых чисел, каков наиболее эффективный способ получить число других целых чисел в массиве в n?
$arr = array(0,0,1,2,2,5,6,7,7,9,10,10);
И если предположить $n = 2
, что является наиболее эффективным способом, чтобы получить количество каждого значения в массиве в пределах $n
каждого значения?
Например, 6
имеет 3 других значения в пределах $n
: 5,7,7.
В конечном счете я хотел бы соответствующий массив просто подсчетов в $n
, например, так:
// 0,0,1,2,2,5,6,7,7,9,10,10 // $arr, so you can see it lined up
$count_arr = array(4,4,4,4,4,3,3,4,4,4, 2, 2);
Это простая Еогеасп петля путь? CodePad Link
$arr = array(0,0,1,2,2,5,6,7,7,9,10,10);
$n = 2;
$count_arr = array();
foreach ($arr as $v) {
$range = range(($v-$n),($v+$n)); // simple range between lower and upper bound
$count = count(array_intersect($arr,$range)); // count intersect array
$count_arr[] = $count-1; // subtract 1 so you don't count itself
}
print_r($arr);
print_r($count_arr);
Похоже, что массив отсортирован. Это всегда так? – kojiro
Не обязательно. Но я всегда мог сортировать заранее, чтобы сделать так. – Ryan