2015-12-06 66 views
1

在下面的代碼中formatDates()方法不返回任何東西,但是當我在getMeetData()中做一個var_dump時,日期被格式化了。爲什麼是這樣?我一直認爲,由於變量範圍內的操作發生在一個方法內的變量保持在該方法&不會影響任何方法以外的變量。以另一種方法影響變量的PHP方法操作

我很明顯誤解了一些東西&在我的搜索中找不到任何有用的東西,但我懷疑其中一部分原因是我真的不知道如何短語搜索詞。

public function getMeetData($limit = NULL){ 
    $meet_data = $this->retrieve_meets->retrieveBasicMeetData($limit); 
    $this->formatDates($meet_data); 

    var_dump($meet_data); 
} 

protected function formatDates($meet_data){ 
    foreach($meet_data as $key => $value){ 
     $meet_data[$key]->start_date = date("d/m/Y", strtotime($value->start_date)); 
     $meet_data[$key]->end_date = date("d/m/Y", strtotime($value->end_date)); 
    } 
} 

我已經把從getMeetData()一個的var_dump的結果,但無formatDates打電話(我評論$這個 - > formatDates($ meet_data);明)如下:

array (size=5) 
    0 => 
    object(stdClass)[76] 
     public 'title' => string 'Meeting' (length=22) 
     public 'slug' => string 'meeting-november-2015' (length=36) 
     public 'start_date' => string '2015-10-30' (length=10) 
     public 'end_date' => string '2015-10-30' (length=10) 
     public 'activities' => 
     array (size=1) 
      0 => string 'Meeting' (length=7) 

下面是從上面而是以formatDates調用(使用相同的數據結果)

array (size=5) 
    0 => 
    object(stdClass)[76] 
     public 'title' => string 'Meeting' (length=22) 
     public 'slug' => string 'meeting-november-2015' (length=36) 
     public 'start_date' => string '30/10/2015' (length=10) 
     public 'end_date' => string '30/10/2015' (length=10) 
     public 'activities' => 
     array (size=1) 
      0 => string 'Meeting' (length=7) 

回答

1

$ meet_data是一個對象,在PHP中的「對象是通過引用傳遞默認」。請參閱http://php.net/manual/en/language.oop5.references.php

+0

我明白了,我只是假設他們像變數一樣傳遞。儘管現在你已經指出了它,但通過引用傳遞它們更有意義。 –

+0

有趣,下一行你發佈的是'這不完全正確.'。 – Sean

+0

@肖恩你能詳細說一下嗎?即使這只是一些關於要查找什麼的筆記。 –

相關問題