PHP数组比较不同长度

时间:2013-11-26 18:36:44

标签: php arrays comparison

我需要比较2个不一样大小的数组的值,每个数组都包含登录时间或注销时间。我需要在这些值之间记录总时间或时间。我被抓到的地方是注销结果通常小于登录。我尝试了以下但是它根本不准确。

$offset = 0;
for($i=0;$i<sizeof($login_ary);$i++){
    //unset($time_logged);
    $time_logged = Array();
    while( (int)$login_ary[$i] > (int)$logout_ary[$i] ) {
        $offset++;
    }
    $time_logged['login'] = $login_ary[$i] + $offset;
    $time_logged['logout'] = $logout_ary[$i];

    $calc_ary[] = $time_logged;
}
$time_logged_in = "undefined";

最终结果我需要获得一个带有排队登录/注销的数组,或者计算登录时间和注销时间之间的总时差。但我必须排除没有关联注销的登录。

编辑

1)数组内部的时间是unix时间戳 2)数组不是静态的,因为这是在结果集中的每个用户的循环内完成的,因此var_dump看起来像下面这样

login_arr

  

数组([0] =&gt;'1385402632',[1] =&gt;'1385763384',[2] =&gt;'1387293992')

logout_arr

  

数组([0] =&gt;'1387294012')

**我的解决方案**

我的解决方案脱离了原始问题的背景,这就是我将其作为编辑而不是答案发布的原因。但这就是我所做的,它的简单性使我感到愚蠢,我最初没有想到它。我所做的是将会话超时写入logout_ary,因为数据将无法表示,否则,我们认为捏造时间更好然后完全避免它。所以我花了登录时间并捏造了一个注销时间,并在同一点将它拼接到数组中。如果有这个问题,我仍然想知道这个问题的真正答案。

    for($i=0;$i<sizeof($login_ary);$i++){
        //unset($time_logged);
        $time_logged = Array();
        if( (int)$login_ary[$i] > (int)$logout_ary[$i] ) {
            array_splice($logout_ary,$i,0,$login_ary[$i]+$session_length);
            $time_logged['login'] = $login_ary[$i];
            $time_logged['logout'] = $logout_ary[$i];
        } else {
            $time_logged['login'] = $login_ary[$i];
            $time_logged['logout'] = $logout_ary[$i];
        }
        $calc_ary[] = $time_logged;
    }

2 个答案:

答案 0 :(得分:0)

两个数组中究竟存储了什么?只是时间变量?如何说login_ary [i]是log_out [i]时间的登录时间,你怎么知道?另外,为什么不采用log_out时间 - log_in时间来获得时间差?

答案 1 :(得分:0)

请阅读评论,我认为这可能是您评论后的内容,我可以看看我是否可以提供更多帮助。

<?php

function calcTime($login_ary, $loutout_ary) {

    $login_ary_length = sizeof($login_ary); 
    $logout_ary_length = sizeof($logout_ary);  

    if($login_ary_length != $logout_ary_length) {
        $diff = $login_ary_length - $logout_ary_length;
        //just find the code that suits your format and put it in the function     strtotime()
        $timestamp = strtotime('TODAYS DATE AND TIME');
        //for the amount of diff we add todays date and time to the array so that they are eqal
        for(i=0; i<=$diff; i++) {
        array_push($logout_ary, $timestamp);  
    }

    //I'm going to leave this for you to do.

    return $total_hours; 

    }
}
?>

我希望这是你正在寻找的东西。