显示不相邻的数据 本帖最后由 lazygc520 于 2014-08-05 14:02:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $arrs = array ( 0 => array ( 'pono' => 'a', 'no' => '4711', ), 1 => array ( 'pono' => 'a', 'no' => '4714', ), 2 => array ( 'pono' => 'b', 'no' => '4714', ), 3 => array ( 'pono' => 'b', 'no' => '4715', ), 4 => array ( 'pono' => 'c', 'no' => '4715', ), 5 => array ( 'pono' => 'c', 'no' => '4716', ),);$tmp=array();$data=array();$i=0;foreach($arrs as $key=>$arr){ if(!empty($tmp) && array_key_exists($arr['pono'],$tmp)){ $key=$tmp[$arr['pono']]; $arr_no=explode(',',$data[$key]['no']); if(!in_array($arr['no'],$arr_no)) $data[$key]['no'].=','.$arr['no']; }else{ $tmp[$arr['pono']]=$i; $data[$i++]=$arr; }}print_r($data);$result = array();foreach($data as $val){ list($a, $b) = explode(',', $val['no']); if(abs($a-$b)!=1){ array_push($result, $val); }}print_r($result);Array( [0] => Array ( [pono] => a [no] => 4711,4714 )) <?php$arrs = array ( 0 => array ( 'pono' => 'a', 'no' => '4711', ), 1 => array ( 'pono' => 'a', 'no' => '4714', ), 2 => array ( 'pono' => 'b', 'no' => '4714', ), 3 => array ( 'pono' => 'b', 'no' => '4715', ), 4 => array ( 'pono' => 'c', 'no' => '4715', ), 5 => array ( 'pono' => 'c', 'no' => '4716', ), 6 => array ( 'pono' => 'a', 'no' => '4712', ), 7 => array ( 'pono' => 'a', 'no' => '4713', ), 8 => array ( 'pono' => 'a', 'no' => '4719', ),);$tmp=array();$data=array();$i=0;foreach($arrs as $key=>$arr){ if(!empty($tmp) && array_key_exists($arr['pono'],$tmp)){ $key=$tmp[$arr['pono']]; $arr_no=explode(',',$data[$key]['no']); if(!in_array($arr['no'],$arr_no)) $data[$key]['no'].=','.$arr['no']; }else{ $tmp[$arr['pono']]=$i; $data[$i++]=$arr; }}print_r($data);$result = array();foreach($data as $val){ $tmp = explode(',', $val['no']); if(!checkSerialNum($tmp)){ array_push($result, $val); }}print_r($result);// 判斷數組內元素是否連續數字function checkSerialNum($arr){ asort($arr); $arr = array_values($arr); for($i=0,$len=count($arr)-1; $i<$len; $i++){ if(abs($arr[$i]-$arr[$i+1])!=1){ return false; } } return true;}?>優化了一下,可以支持'no'不指定2個數值的情況。 关于pdo的一个疑问 请问这个功能怎么实现? 求一个时间日期相减函数。 请问一下PHP中过滤用户名输入的函数 写的判断邮箱格式出错 php程序访问时页面经常变空白,刷新一下又恢复正常,这个怎么解决? 问些php安全的问题 各位,这个日历控件叫什么名字啊,如何使用? php与sql server2000的连接 php的fsockopen的问题 关于xml解析 php socket服务端能不能在网页端开启?而不是只能用CLI模式开启
$arrs = array (
0 =>
array (
'pono' => 'a',
'no' => '4711',
),
1 =>
array (
'pono' => 'a',
'no' => '4714',
),
2 =>
array (
'pono' => 'b',
'no' => '4714',
),
3 =>
array (
'pono' => 'b',
'no' => '4715',
),
4 =>
array (
'pono' => 'c',
'no' => '4715',
),
5 =>
array (
'pono' => 'c',
'no' => '4716',
),
);
$tmp=array();
$data=array();
$i=0;
foreach($arrs as $key=>$arr){
if(!empty($tmp) && array_key_exists($arr['pono'],$tmp)){
$key=$tmp[$arr['pono']];
$arr_no=explode(',',$data[$key]['no']);
if(!in_array($arr['no'],$arr_no)) $data[$key]['no'].=','.$arr['no'];
}else{
$tmp[$arr['pono']]=$i;
$data[$i++]=$arr;
}
}
print_r($data);$result = array();foreach($data as $val){
list($a, $b) = explode(',', $val['no']);
if(abs($a-$b)!=1){
array_push($result, $val);
}
}print_r($result);Array
(
[0] => Array
(
[pono] => a
[no] => 4711,4714
))
<?php
$arrs = array (
0 =>
array (
'pono' => 'a',
'no' => '4711',
),
1 =>
array (
'pono' => 'a',
'no' => '4714',
),
2 =>
array (
'pono' => 'b',
'no' => '4714',
),
3 =>
array (
'pono' => 'b',
'no' => '4715',
),
4 =>
array (
'pono' => 'c',
'no' => '4715',
),
5 =>
array (
'pono' => 'c',
'no' => '4716',
),
6 =>
array (
'pono' => 'a',
'no' => '4712',
),
7 =>
array (
'pono' => 'a',
'no' => '4713',
),
8 =>
array (
'pono' => 'a',
'no' => '4719',
),
);
$tmp=array();
$data=array();
$i=0;
foreach($arrs as $key=>$arr){
if(!empty($tmp) && array_key_exists($arr['pono'],$tmp)){
$key=$tmp[$arr['pono']];
$arr_no=explode(',',$data[$key]['no']);
if(!in_array($arr['no'],$arr_no)) $data[$key]['no'].=','.$arr['no'];
}else{
$tmp[$arr['pono']]=$i;
$data[$i++]=$arr;
}
}
print_r($data);$result = array();foreach($data as $val){
$tmp = explode(',', $val['no']);
if(!checkSerialNum($tmp)){
array_push($result, $val);
}
}print_r($result);// 判斷數組內元素是否連續數字
function checkSerialNum($arr){
asort($arr);
$arr = array_values($arr);
for($i=0,$len=count($arr)-1; $i<$len; $i++){
if(abs($arr[$i]-$arr[$i+1])!=1){
return false;
}
}
return true;
}?>優化了一下,可以支持'no'不指定2個數值的情況。