定义和调用自定义函数
问题描述:
我的代码块完美的作品:定义和调用自定义函数
$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];
}
任何人有任何建议关于如何理清这个语法?
答
你必须将你的函数的结果赋值给变量。
$results = call_db();
答
您还没有将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
答
虽然这是可怕的设计:
foreach (call_db() as $result) { ... }
这会走在功能或循环之前? – BradM 2014-09-20 19:48:31
循环之前。在你现在调用这个函数的地方。 – marian0 2014-09-20 19:49:16
谢谢,感谢您的帮助! – BradM 2014-09-20 20:12:32