我有一块非常好用的代码:
$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
是否是一个数组。看看这个。