我得到了以下代码,但目前它生成了一系列结果,但大约有40多个空格。
$user_ = JFactory::getUser();
$db = JFactory::getDBO();
$levels = JAccess::getAuthorisedViewLevels($user->id);
foreach($levels as $key => $level)
{
$query = 'SELECT title FROM #__pf_projects';
$query .= ' WHERE access = ' . $level . " AND TRIM(title) != ''";
$db->setQuery($query);
$projectlist = $db->loadResult($query).'<br>';
echo $projectlist;
}
起初我认为array_filter()
在这里会很好,但是PatrickQ指出它是一个字符串,所以阵列过滤器不会起作用。
然后我根据Don's Panic的答案调整了代码。这个改编的代码就是你在上面看到的。
现在返回一个这样的列表。
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
http://www.domain1.com
<br>
<br>
<br>
<br>
http://www.domain5.com
http://www.domain23.com
http://www.domain65.com
http://www.domain213.com
<br>
<br>
<br>
<br>
<br>
<br>
那么如何调整代码以获得这样的列表:
http://www.domain1.com
http://www.domain5.com
http://www.domain23.com
http://www.domain65.com
http://www.domain213.com
当您将<br>
更改为,
时,列表会变为,,,,,,,,,,,http,,,,,,httphttphttphttp,,,,,,,
&lt; =我把它写得更短了。
答案 0 :(得分:2)
如果array_filter
没有过滤掉空值,那么它们可能并非真空。假设那里有某种空格而不是空字符串或空字符串,你可以修改你的查询来修剪标题,只返回那里仍有东西的结果。
SELECT title FROM #__pf_projects
WHERE access = ? AND title IS NOT NULL AND TRIM (title) != ''
或者,就原始PHP代码而言:
$query = 'SELECT title FROM #__pf_projects';
$query .= ' WHERE access = ' . $level . " AND TITLE IS NOT NULL AND TRIM(title) != ''";
尽管如此,最好避免将变量连接到SQL中。如果您使用的框架有某种方式来使用预准备语句,那么您应该改为使用该路径。
如果这仍然不起作用,我真的不知道还有什么可以尝试查询,但你应该能够只检查PHP中的空结果,只有在那里&#39时回显;展示的东西。
$projectlist = $db->loadResult($query);
if (trim($projectlist)) echo $projectlist.'<br>';
答案 1 :(得分:2)
首先,array_filter,如果没有传递回调,将只删除falsy元素。具有空格的字符串被评估为true,因此不会从数组中删除。你可以这样做:
$filteredArray = array_filter($projectList, function($val) {
return trim($val);
});
print_r($filteredArray);
此外,您无法回显数组。您可以使用print_r或var_dump。
答案 2 :(得分:0)
感谢大家的回答,我终于找到了获得结果的方法。我的方式不一定适合每个人。而在这方面我有更多知识的人可能会做不同的事情。
基本上我的答案是在div中输出每个结果的整个字符串。这将创建许多空div,但这些不是由HTML生成的。然而,它们会出现在检查员中。
我在脚本中使用的最终代码。
$user_ = JFactory::getUser();
$db = JFactory::getDBO();
$levels = JAccess::getAuthorisedViewLevels($user->id);
foreach($levels as $key => $level)
{
$query = 'SELECT title FROM #__pf_projects';
$query .= ' WHERE access = ' . $level;
$db->setQuery($query);
$projectlist = '<div class="project">'.$db->loadResult($query).'</div>';
echo $projectlist;
}
现在给我一个这样的列表:
http://www.domain1.com
http://www.domain5.com
http://www.domain23.com
http://www.domain65.com
http://www.domain213.com