如何对关联数组中连续数字之间的所有差异进行分组?下面是我正在使用的数组
需要将(2,3)(7,8)与他们区别开来,忽略(11,6,5,9)
$array = array(
2 =>"12",
3 =>"12",
11 => "16",
6 => "15",
5 => "14",
7 => "16",
8 => "17",
9 => "18")
下面是我用来对数组进行分组的代码,但它不起作用:
foreach ($array as $k => $v) {
echo $prev;
if (isset($prev)) {
if (($v - $prev) != 1) $newArray[] = $v;
} else { $newArray[] = $v; }
$prev = $v;
}
echo '<pre>';
print_r($newArray);
目前我收到了这个:
Array
(
[0] => 12
[1] => 12
[2] => 16
[3] => 15
[4] => 16
)
但我需要O / P (2,3)=0
差异,(7,8)=1
差异,i。即
array(
[0]=>0,
[1]=>1
);
答案 0 :(得分:2)
所以,你走了。
$newArray = array();
foreach ($array as $k => $v) {
if (isset($prev) && $k == $prev + 1) {
$newArray[] = $v - $array[$prev];
}
$prev = $k;
}
这会产生连续三对的数组:
Array
(
[0] => 0
[1] => 1
[2] => 1
)
如果您想在两对之后停止,请在$i = 0;
之前添加一个正在运行的计数器foreach
,并在循环中的if (++$i >= 2) break;
内以if
退出:
$newArray = array();
$i = 0;
foreach ($array as $k => $v) {
if (isset($prev) && $k == $prev + 1) {
$newArray[] = $v - $array[$prev];
if (++$i >= 2) break;
}
$prev = $k;
}