有点像一个蛮横的方法。有点像kingkero引用。例如:
$array = array('one','one','one','five','five','five','five','five','four','four', 'one','four');
$prev = '';
$sequences = array();
// group them
foreach($array as $value) {
if(!isset($sequences[$value])) {
$sequences[$value][] = 0;
$prev = $value;
}
if($prev == $value) {
$val = array_pop($sequences[$value]) + 1;
$sequences[$value][] = $val;
} else {
$prev = $value;
$sequences[$value][] = 1;
}
}
序列将是这样的:
Array
(
[one] => Array
(
[0] => 3
[1] => 1
)
[five] => Array
(
[0] => 5
)
[four] => Array
(
[0] => 2
[1] => 1
)
)
// identify
$data['key_with_the_most'] = '';
$data['consecutive_pattern'] = 0;
foreach($sequences as $key => $value) {
if(max($value) > $data['consecutive_pattern']) {
$data['consecutive_pattern'] = max($value);
$data['key_with_the_most'] = $key;
}
}
echo '<pre>';
print_r($data);
$data
输出到:
Array
(
[key_with_the_most] => five
[consecutive_pattern] => 5
)
[你尝试过什么?](HTTP:// mattgemmell .com/what-you-you-tried /) – kero
我不知道wh在试图啊?这就是我问的原因。保持downvoting。 – Sacred
你知道你想要什么:最长的序列。那么为什么不获得每个序列,然后比较它们的长度?不知道如何?有创意!相信我,如果你想学习如何解决这个问题,你需要付出努力。如果你想解决它,雇用一个人。另外试着看看我的观点:对我来说,看起来你在<1min内输入了这个问题,而没有其他。如果你不愿意这样做,为什么我应该浪费时间? – kero