1

それらの間に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 )     
  )
4

3 に答える 3

0

条件に応じて配列を分割しようとしているようです。そのため、foreach を使用して最初の変数で一時変数を設定し、それを繰り返してから、if ステートメントを使用して一時値で現在のノードの時刻を確認できます。

于 2013-02-14T09:39:20.950 に答える
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 同じ ID を持つ 2 つのフィールドが検出されました: id=56324 このフィールドは同じ ID を持っています: 分単位の違い: 28 1297627731 1266086544 1013616701 同じ ID を持つ 2 つのフィールドが検出されました: id=21352 このフィールドは同じ ID を持っています: 分単位の差: 0 同じ ID を持つ 2 つのフィールドが検出されました: id=21352 このフィールドには同じ ID があります: 分単位の差: 12 1013616173

最終配列: array(2) { [0]=> array(2) { ["Cardid"]=> int(21352) ["created"]=> string(19) "2002-02-13 11:11: 41" } [1]=> array(2) { ["Cardid"]=> int(21352) ["created"]=> string(19) "2002-02-13 10:59:48" } }

于 2013-02-14T09:39:23.130 に答える