2014-09-20 290 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) { ... }