PHP方法操作影响另一种方法中的变量

时间:2015-12-06 15:48:15

标签: php oop

在下面的代码中,formatDates()方法没有返回任何内容,但是当我在getMeetData()中执行var_dump时,日期被格式化。为什么是这样?我一直认为,由于变量范围操作发生在一个方法中的变量中,因此保持在该方法中。不会影响它之外的任何方法中的变量。

我明显误解了某些东西&虽然我怀疑部分原因是我不知道如何说出搜索词。

我的搜索没有找到任何帮助。
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(我在下面注释了$ this-> formatDates($ meet_data); out):

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 个答案:

答案 0 :(得分:1)

$ meet_data是一个对象,在PHP中“默认情况下通过引用传递对象”。见http://php.net/manual/en/language.oop5.references.php