一个有关数组的问题(自我感觉有点难) 本帖最后由 mafeifan 于 2013-07-10 11:02:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以这样写$items = array( array('dna_id'=>55,'status'=>1), array('dna_id'=>55,'status'=>0), array('dna_id'=>56,'status'=>1), array('dna_id'=>58,'status'=>0), array('dna_id'=>58,'status'=>0), array('dna_id'=>60,'status'=>0), array('dna_id'=>60,'status'=>0), array('dna_id'=>60,'status'=>0), array('dna_id'=>60,'status'=>0),);$res = array( 'active'=> array( 'count' => 0, 'ids' => array() ), 'completed' => array( 'count' => 0, 'ids' => array() ),);foreach($items as $v) { if(!in_array($v['dna_id'], $res['active']['ids'])) $res['active']['ids'][] = $v['dna_id']; if($v['status']) { if(!in_array($v['dna_id'], $res['completed']['ids'])) $res['completed']['ids'][] = $v['dna_id']; }else $res['completed']['ids'] = array_diff($res['completed']['ids'], array($v['dna_id']));}$res['active']['ids'] = array_diff($res['active']['ids'], $res['completed']['ids']);$res['active']['count'] = count($res['active']['ids']);$res['completed']['count'] = count($res['completed']['ids']);print_r($res);Array( [active] => Array ( [count] => 3 [ids] => Array ( [0] => 55 [2] => 58 [3] => 60 ) ) [completed] => Array ( [count] => 1 [ids] => Array ( [1] => 56 ) )) foreach($items as $v){ $arr[$v['dna_id']][]=$v['status'];}print_r($arr);foreach($arr as $k=>$v){ if($v==array_filter($v,'foo')){ $ar['completed']['count']++; $ar['completed']['ids'][]=$k; }else{ $ar['active']['count']++; $ar['active']['ids'][]=$k; }}print_r($ar);function foo($v){ return $v==1;} 也可以这样写,减少点判断foreach($items as $v) { $res['active']['ids'][] = $v['dna_id']; if($v['status']) { $res['completed']['ids'][] = $v['dna_id']; }else $res['completed']['ids'] = array_diff($res['completed']['ids'], array($v['dna_id']));}$res['active']['ids'] = array_unique($res['active']['ids']);$res['completed']['ids'] = array_unique($res['completed']['ids']);$res['active']['ids'] = array_diff($res['active']['ids'], $res['completed']['ids']);$res['active']['count'] = count($res['active']['ids']);$res['completed']['count'] = count($res['completed']['ids']); <?php$items = array( array('dna_id'=>55,'status'=>1), array('dna_id'=>55,'status'=>0), array('dna_id'=>56,'status'=>1), array('dna_id'=>58,'status'=>0), array('dna_id'=>58,'status'=>0), array('dna_id'=>60,'status'=>0), array('dna_id'=>60,'status'=>0), array('dna_id'=>60,'status'=>0), array('dna_id'=>60,'status'=>0) );$ar=array();$arr=array();foreach($items as $k=>$v){ if (!in_array($v['dna_id'], $arr) && $v['status']===0) $arr[]=$v['dna_id']; if (!in_array($v['dna_id'], $ar)) $ar[]=$v['dna_id'];}$a=array_diff($ar,$arr);$c1=count($arr);$c2=count($a);$o=array( 'active'=>array('count'=>$c1,'ids'=>$arr), 'completed'=>array('count'=>$c2,'ids'=>$a));var_export($o);?> 本帖最后由 xuzuning 于 2013-07-10 12:28:57 编辑 php的while循环的诡异地方 正则表达式求助! JSON转数组 获取问题 请问可能将一个页面中的一部分数据用POST提交,一部分用GET提交么?可能的话如何实现? 提示:无法载入 mysql 扩展,请检查 PHP 配置.请问这是什么原因?如何解决.谢谢!! 没办法,在2000论坛里没人回答我,可我现在快死,请哪位大侠帮帮我? 数组排序问题。。急~ 推荐一本讲php的好书吧! 小弟非常急,请高手看一看如下代码那里出错误,请指教,在线等待,先谢了。 一个关于APACHE的难题 求教,现在还能从百度的搜索结果里获取内容吗? 数组循环与SMARTY的问题
array('dna_id'=>55,'status'=>1),
array('dna_id'=>55,'status'=>0),
array('dna_id'=>56,'status'=>1),
array('dna_id'=>58,'status'=>0),
array('dna_id'=>58,'status'=>0),
array('dna_id'=>60,'status'=>0),
array('dna_id'=>60,'status'=>0),
array('dna_id'=>60,'status'=>0),
array('dna_id'=>60,'status'=>0),
);
$res = array(
'active'=> array(
'count' => 0,
'ids' => array()
),
'completed' => array(
'count' => 0,
'ids' => array()
),
);
foreach($items as $v) {
if(!in_array($v['dna_id'], $res['active']['ids'])) $res['active']['ids'][] = $v['dna_id'];
if($v['status']) {
if(!in_array($v['dna_id'], $res['completed']['ids'])) $res['completed']['ids'][] = $v['dna_id'];
}else $res['completed']['ids'] = array_diff($res['completed']['ids'], array($v['dna_id']));
}
$res['active']['ids'] = array_diff($res['active']['ids'], $res['completed']['ids']);
$res['active']['count'] = count($res['active']['ids']);
$res['completed']['count'] = count($res['completed']['ids']);
print_r($res);
Array
(
[active] => Array
(
[count] => 3
[ids] => Array
(
[0] => 55
[2] => 58
[3] => 60
) ) [completed] => Array
(
[count] => 1
[ids] => Array
(
[1] => 56
) ))
$arr[$v['dna_id']][]=$v['status'];
}
print_r($arr);
foreach($arr as $k=>$v){
if($v==array_filter($v,'foo')){
$ar['completed']['count']++;
$ar['completed']['ids'][]=$k;
}else{
$ar['active']['count']++;
$ar['active']['ids'][]=$k;
}
}
print_r($ar);
function foo($v){
return $v==1;
}
$res['active']['ids'][] = $v['dna_id'];
if($v['status']) {
$res['completed']['ids'][] = $v['dna_id'];
}else $res['completed']['ids'] = array_diff($res['completed']['ids'], array($v['dna_id']));
}
$res['active']['ids'] = array_unique($res['active']['ids']);
$res['completed']['ids'] = array_unique($res['completed']['ids']);
$res['active']['ids'] = array_diff($res['active']['ids'], $res['completed']['ids']);
$res['active']['count'] = count($res['active']['ids']);
$res['completed']['count'] = count($res['completed']['ids']);
<?php
$items = array(
array('dna_id'=>55,'status'=>1),
array('dna_id'=>55,'status'=>0),
array('dna_id'=>56,'status'=>1),
array('dna_id'=>58,'status'=>0),
array('dna_id'=>58,'status'=>0),
array('dna_id'=>60,'status'=>0),
array('dna_id'=>60,'status'=>0),
array('dna_id'=>60,'status'=>0),
array('dna_id'=>60,'status'=>0)
);$ar=array();
$arr=array();
foreach($items as $k=>$v){
if (!in_array($v['dna_id'], $arr) && $v['status']===0) $arr[]=$v['dna_id'];
if (!in_array($v['dna_id'], $ar)) $ar[]=$v['dna_id'];
}
$a=array_diff($ar,$arr);
$c1=count($arr);
$c2=count($a);$o=array(
'active'=>array('count'=>$c1,'ids'=>$arr),
'completed'=>array('count'=>$c2,'ids'=>$a)
);
var_export($o);
?>