Should I store the result of an function into an array?

前端 未结 2 1733
时光说笑
时光说笑 2021-01-23 17:03

I have a function like this:

function time_elapsed_string($ptime)
{
            $date_time = strtotime(\"1348-10-10 04:30:01\") + $ptime;
            $year = dat         


        
相关标签:
2条回答
  • 2021-01-23 17:13

    This is a no brainer.

    Yes - store the function call result of time_elapsed_string($ptime) in an array, then use that to access your results. You're wasting CPU cycles otherwise!

    // call it once
    $result = time_elapsed_string($ptime);
    
    // then use:
    $result['date'];
    $result['time'];
    $result['difference'];
    
    0 讨论(0)
  • 2021-01-23 17:37

    Counting time elapsed since some date/time like this is mauvais ton.

    DateTime has been available since PHP 5.2.0 and tonns of people underestimate it. Why don't you use this instead of loops and ifs?

    $create_time = "2016-08-02 12:35:04";
    $current_time="2016-08-02 16:16:02";
    
    $dtCurrent = DateTime::createFromFormat('Y-m-d H:i:s', $current_time);
    // to use current timestamp, use the following:
    //$dtCurrent = new DateTime();
    $dtCreate = DateTime::createFromFormat('Y-m-d H:i:s', $create_time);
    $diff = $dtCurrent->diff($dtCreate);
    

    Now, you can format the result however you want:

    $interval = $diff->format("%h hours %i minutes %s seconds");
    

    This will give a clean 3 hours 40 minutes 58 seconds without any arrays, which is better.

    UPDATE

    There is a general solution to get hours / minutes / seconds via regex:

    $interval = $diff->format("%y years %m months %d days %h hours %i minutes %s seconds");
    
    // now remove zero values
    $interval = preg_replace('/(^0| 0) (years|months|days|hours|minutes|seconds)/', '', $interval);
    

    UPDATE 2

    As of your comment:

    Look, I want to use your approach .. but I really cannot implement it .. Actually I need three things: time, date, difference ..! But your approach doesn't give me them..

    Well, we already know how to get the difference, it's the $interval variable described above.

    To get time and date, you can get it from the $dtCreate variable by, again, using format:

    $time = $dtCreate->format('H:i:s');
    $date = $dtCreate->format('d-m-Y');
    
    0 讨论(0)
提交回复
热议问题