2014-09-20 284 views
0

我的代碼塊完美的作品:定義和調用自定義函數

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select(array($db->quoteName('date'))); 
$query->from($db->quoteName('#__webfoot_minutes_and_agendas')); 
$query->order('date DESC'); 
$db->setQuery($query); 
$results = $db->loadObjectList(); 

直到我試圖將其分配到的函數:

function call_db() { 
    $db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $query->select(array($db->quoteName('date'))); 
    $query->from($db->quoteName('#__webfoot_minutes_and_agendas')); 
    $query->order('date DESC'); 
    $db->setQuery($query); 
    $results = $db->loadObjectList(); 

    return $results; 
} 

它打破了,當我試圖調用功能,我得到$一個錯誤的結果我得到的,「爲的foreach()提供的參數無效...:

call_db(); 

foreach ($results as $result) { 
    $dateArr = explode('-', $result->date); 
     if (!in_array($dateArr[0], $already_echoed)) { 
     echo '<li><a href="#tabs-' . $count . '">' . $dateArr[0] . '</a></li>'; 
     $count++; 
     } 
    $already_echoed[] = $dateArr[0]; 
} 

任何人有任何建議關於如何理清這個語法?

回答

2

你必須將你的函數的結果賦值給變量。

$results = call_db(); 
+0

這會走在功能或循環之前? – BradM 2014-09-20 19:48:31

+0

循環之前。在你現在調用這個函數的地方。 – marian0 2014-09-20 19:49:16

+0

謝謝,感謝您的幫助! – BradM 2014-09-20 20:12:32

0

您還沒有將call_db()的返回值賦值給任何東西。你必須先分配它$results

$results = call_db(); 

而且,之後,這是更好,如果你檢查$results是一個數組。見this.

+0

這會在函數中還是在循環之前? – BradM 2014-09-20 19:47:28

+0

循環之前。這將取代循環前的'call_db()'調用。 – nisargjhaveri 2014-09-20 19:48:44

1

雖然這是可怕的設計:

foreach (call_db() as $result) { ... }