如果我们的数组之间的值不到20分钟,我如何从数组中打印出来?
This is my foreach for myArray:
foreach ($cooltransactions as $key=>$value)
{
$array[$key] = array('cardid' => $cooltransactions[$key]['cardid'],'created' => strtotime($cooltransactions[$key]['created']));
}
$newArray=array();
$i=0;
foreach($array as $k=>$v){
$id=$array[$k]['cardid'];
$time=$array[$k]['created'];
foreach($array as $k1=>$v1){
if($k<$k1){
if($array[$k1]['cardid']==$id){
if(compare($time,$array[$k1]['created'])){
$newArray[$i]['cardid']=$id;
$newArray[$i]['created']=date('d-m-y H:i:s', $time['created']);
$i++;
}
}
}
}
}
function compare($firsttime, $secondtime){
$interval = $firsttime-$secondtime;
$dif=round(abs($interval) / 60);
if ($dif < 2 || $dif < -2 ) {
return true;
}
}
的print_r($ newArray);
这就是我得到的:
Array (
[0] => Array ( [cardid] => 56324 [created] => 01-01-70 01:00:00)
[1] => Array ( [cardid] => 56324 [created] => 01-01-70 01:00:00)
[2] => Array ( [cardid] => 21352 [created] => 01-01-70 01:00:00)
[3] => Array ( [cardid] => 21352 [created] => 01-01-70 01:00:00)
)
但这是我想要的输出:
Array (
[1] => Array ( [Cardid] => 21352 [created] => 02-02-13 11:11:41 )
[2] => Array ( [Cardid] => 21352 [created] => 02-02-13 10:59:48 )
)
答案 0 :(得分:0)
您似乎希望在条件下拆分数组,因此您可以使用foreach并使用第一个设置临时变量并对其进行迭代,然后在if语句的帮助下使用临时值检查当前节点的时间。
答案 1 :(得分:0)
使用此代码:
$cooltransactions=Array (
Array ( 'Cardid' => 56324, 'created' => '11-02-13 15:36:32' ),
Array ( 'Cardid' => 56324, 'created' => '11-02-13 15:08:51' ),
Array ( 'Cardid' => 42683, 'created' => '10-02-13 13:42:24' ),
Array ( 'Cardid' => 21352, 'created' => '02-02-13 11:11:41' ),
Array ( 'Cardid' => 21352, 'created' => '02-02-13 11:11:41' ),
Array ( 'Cardid' => 74124, 'created' => '02-02-13 11:02:53' ),
Array ( 'Cardid' => 21352, 'created' => '02-02-13 10:59:48' )
);
foreach ($cooltransactions as $key=>$value)
{
$array[$key] = array('Cardid' => $cooltransactions[$key]['Cardid'],
'created' => strtotime($cooltransactions[$key]['created'])
);
}
$newArray=array();
$i=0;
foreach($array as $k=>$v){
if(isset($array[$k])){
$id=$array[$k]['Cardid'];
$time=$array[$k]['created'];
echo $time.'<br>';
foreach($array as $k1=>$v1){
if($k<$k1){
if($array[$k1]['Cardid']==$id){
echo '2 fields with the same id have been detected: id='.$id.'</br>';
if(compare($time,$array[$k1]['created'])){
$newArray[$i]['Cardid']=$id;
$newArray[$i]['created']=date("Y-m-d h:i:s", $array[$k1]['created']);
unset($array[$k1]);
$i++;
}
}
}
}
}
}
echo '<br>FINAL ARRAY:<br>';
var_dump($newArray);
function compare($firsttime, $secondtime){
$interval = $firsttime-$secondtime;
$dif=round(abs($interval) / 60);
echo 'This fields have the same id: the difference in minutes is: '.$dif.' </br>';
if ($dif < 20 || $dif < -20 ) {
return true;
}
}
1297629392 已检测到2个具有相同ID的字段:id = 56324 此字段具有相同的ID:分钟的差异为:28 1297627731 1266086544 1013616701 已检测到2个具有相同ID的字段:id = 21352 此字段具有相同的ID:分钟的差异为:0 已检测到2个具有相同ID的字段:id = 21352 此字段具有相同的ID:分钟的差异为:12 1013616173
最终阵容: array(2){[0] =&gt; array(2){[“Cardid”] =&gt; int(21352)[“created”] =&gt; string(19)“2002-02-13 11:11:41”} [1] =&gt; array(2){[“Cardid”] =&gt; int(21352)[“created”] =&gt; string(19)“2002-02-13 10:59:48”}}
答案 2 :(得分:0)
$arr=Array (
Array ( 'Cardid' => 56324, 'created' => '11-02-13 15:36:32' ),
Array ( 'Cardid' => 56324, 'created' => '11-02-13 15:08:51' ),
Array ( 'Cardid' => 42683, 'created' => '10-02-13 13:42:24' ),
Array ( 'Cardid' => 21352, 'created' => '02-02-13 11:11:41' ),
Array ( 'Cardid' => 74124, 'created' => '02-02-13 11:02:53' ),
Array ( 'Cardid' => 21352, 'created' => '02-02-13 10:59:48' )
);
function filter_rows($rows)
{
$cards=array();
foreach($rows as $row)
{
$cards[$row['Cardid']][]=$row['created'];
}
$res=array();
foreach($cards as $cardid=>$card_trns)
{
for($i=1,$ms=count($card_trns);$i<$ms;$i++)
{
$d1=new DateTime($card_trns[$i]);
$d0=new DateTime($card_trns[$i-1]);
$di=$d1->diff($d0,true);
$diff_min=$di->format('%i');
if($diff_min<=20)
{
$res[]=array('Cardid'=>$cardid, 'created'=>$card_trns[$i]);
$res[]=array('Cardid'=>$cardid, 'created'=>$card_trns[$i-1]);
}
}
}
return $res;
}
print_r(filter_rows($arr));