定义和调用自定义函数


Defining and calling custom function

我有一块非常好用的代码:

$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;
}

当我尝试调用函数时,它会中断,我得到的$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];
}

有人对我如何理顺这个语法有什么建议吗?

您必须将函数的结果分配给变量。

$results = call_db();

尽管这是一个糟糕的设计:

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

您还没有将call_db()的返回值分配给任何东西。您必须首先将其分配给$results

$results = call_db();

然后,最好检查$results是否是一个数组。看看这个。