定义和调用自定义函数

时间:2014-09-20 19:36:50

标签: php

我有一段完美无瑕的代码:

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

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

任何人对如何理顺这种语法都有任何建议吗?

3 个答案:

答案 0 :(得分:2)

您必须将函数的结果赋值给变量。

$results = call_db();

答案 1 :(得分:1)

虽然设计很糟糕:

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

答案 2 :(得分:0)

您尚未将call_db()的返回值分配给任何内容。您必须先将其分配给$results

$results = call_db();

之后,如果你检查$results是一个数组会更好。见this.