2011-02-26 49 views
1

我運行這個功能內循環運行PHP函數不能正常工作(有代碼)

function Age($month, $day, $year) { 
    date_default_timezone_set('America/New_York'); 
    $dob = $month .''. $day .''. $year; 
    $startDate = strtotime($dob); 
    $endDate = time(); 
    $dif = $endDate - $startDate; 

    return $years = (date('Y', $dif) - 1970) .' y, '. ($months = date('n', $dif) - 1).' m'; 
} 

一個foreach循環內(有些笨標記):

foreach ($users as $row) { 
    echo $this->includes->Age($row->birth_month, $row->birth_day, $row->birth_year) 
    } 

環路工程確定,顯示所有我的用戶。

但問題是,它會爲第一位用戶正確計算年齡,然後爲所有其他用戶顯示相同的年齡。我應該指出,所有其他用戶的數據都是正確的,只有年齡是錯誤的。

任何人都知道如何解決這一問題?

謝謝!

回答

3

您的$dob看起來格式不正確。嘗試$dob = $year . '-' . $month . '-' $day;

+0

'strtotime()'不喜歡'mm-dd-yyyy' – Shad 2011-02-26 21:28:51

+0

謝謝!很好地解決了這個問題! – pepe 2011-02-26 21:35:14

0

也許CI緩存結果?
似乎功能年齡正確

+0

我的眼睛CI運行的功能(頂部代碼)並返回值直接到視圖(底部代碼),所以我只是不明白爲什麼它不刷新每個循環的價值 – pepe 2011-02-26 21:24:52

+0

哦..嘗試使用這個foreach($ users爲&$ row) – azat 2011-02-26 21:28:01

+0

併發布如何嘗試更新$ users數組 – azat 2011-02-26 21:28:36

1

你缺少空間/分隔符。

$dob = $month .''. $day .''. $year; 

應該

$dob = $month .'/'. $day .'/'. $year; 

編輯: 歧義。如果使用mm-dd-yyyy格式,應該是/

。和 - 指示dd-mm-yyyy

+0

這不是必需的,但如果是這樣,最好的方法是使用mktime – azat 2011-02-26 21:34:07