有一个一维数组要求取出$a中相连元素的组数,及每一组的元素.
如$a=array(5,6,7,12,15,16,20);
应该得到:
组数为:2;
每一组的元素为:第一组(5,6,7);第二组(15,16);
如$a=array(5,6,7,12,15,16,20);
应该得到:
组数为:2;
每一组的元素为:第一组(5,6,7);第二组(15,16);
解决方案 »
- 下面是单文件上传,怎么实现多文件上传,并分别将其信息插入数据库中
- 关于一个表单传递数据插入数据库的简单问题
- mysql_connect连接数据库失败
- PHP表统计,知道的说下,谢谢
- PHP可以脱离浏览器在后台运行不
- PHP运行在IIS上.
- 一个PHP配置时遇到的问题,一个PHP上传文件问题,争求解决
- 可以取得数组的数据个数,为什么输出说offset错误?
- 怎样利用PHP将MySQL的数据导出XML格式?
- 谁能帮我写一个和自定义函数来统计注册会员总数的代码
- a开头b结尾 中间不要存在 单词 ab 的 正则?谁帮忙。不要 替换哦!
- 在做PHP无限分类的时候,我用的是ajax,效果已经实现了,但是显示不出来
$arr = array();
$j = 0;
for($i=0;$i<count($a);$i++)
{
if($a[$i-1])
{
if($a[$i] - $a[$i-1] == 1)
{
if(!in_array($a[$i-1],(array)$arr[$j])) $arr[$j][] = $a[$i-1];
$arr[$j][] = $a[$i];
}
else
{
$j++;
}
}
}
print_r(array_values($arr));
$arr = array();
$j = 0;
for($i=1;$i<count($a);$i++)
{if($a[$i] - $a[$i-1] == 1)
{
if(!in_array($a[$i-1],(array)$arr[$j])) $arr[$j][] = $a[$i-1];
$arr[$j][] = $a[$i];
}
else
{
$j++;
}
}
print_r(array_values($arr));
$a=array(5,6,7,12,15,16,20);
$begin = -1;
$out = array();
for ($n=0; $n < count($a); $n++) {
if ($a[$n] !== $a[$n+1]-1) {
if ($begin != -1 && ($n >= 1 || !isset($a[$n+1]))){
$out[] = array_slice($a, $begin, max($n-$begin+1, -1));
$begin = -1;
}
} else if ($begin == -1) {
$begin = $n;
}
}
print_r($out);
?>
$a=array(5,6,7);
$begin = -1;
$out = array();
for ($n=0; $n < count($a); $n++) {
if ($a[$n] !== $a[$n+1]-1) {
if ($begin != -1 && $n > 0 ){
$out[] = array_slice($a, $begin, $n-$begin+1);
$begin = -1;
}
} else if ($begin == -1) {
$begin = $n;
}
}
print_r($out);
?>
<?php
$a=array(5,6,7,12,15,16,20);
$begin = -1;
$out = array();
for ($n=0; $n < count($a); $n++) {
if ($a[$n] !== $a[$n+1]-1) {
if ($begin != -1) {
$out[] = array_slice($a, $begin, $n-$begin+1);
$begin = -1;
}
} else if ($begin == -1) {
$begin = $n;
}
}
print_r($out);
?>
$t = array();
foreach($a as $v) {
if($v != $k) {
if(count($t) > 1) {
$o[] = $t;
}
$t = array();
}
$t[] = $v;
$k = $v+1;
}
print_r($o);
$a=array(5,6,7,12,15,16,20);
$results=array();do{
$c=array_intersect_assoc($a, range($a[0],$a[count($a)-1]) );
if(count($c)>1) $results[]=$c;
$a=array_values(array_diff($a,$c));
}while( !empty($c) && !empty($a) );print_r($results);
$a = array(5,6,7);
$t = array();
foreach($a as $v) {
if($v != $k) {
if(count($t) > 1) {
$o[] = $t;
}
$t = array();
}
$t[] = $v;
$k = $v+1;
}/* 是的,要加上这段 */
if(count($t) > 1) {
$o[] = $t;
}print_r($o);
================================
$a=array(5,6,7,12,15,16,20);
$j = 0;
for($i=1;$i<count($a);$i++)
{
if($a[$i] - $a[$i-1] == 1)
{
if($arr[$j] == '') $arr[$j][] = $a[$i-1];
$arr[$j][] = $a[$i];
}
else $j = count($arr);
}
print_r($arr);
再改改.
====================
$a=array('t'=>5,6,'x'=>7,12,'y'=>15,16,5,20,21);
$j = 0;
foreach($a as $k=>$v)
{
$n = next($a);
if( $n - $v == 1 )
{
$arr[$j] == '' ? $arr[$j][] = $v.'|'.'key is: "'.$k.'"' : '';
$arr[$j][] = $n.'|'.'key is: "'.key($a).'"';
}
else $j = count($arr);
}
print_r($arr);