我正在试图弄清楚我是否需要在for循环内或for循环之外执行此操作但是我想先检查它是否为空。
echo "<ul>";
for($x = 0; $x <= (count($quotesArray)-1); $x++)
{
echo "<li>".stripslashes($quotesArray[$x]->quote)."</li>";
}
echo "</ul>";
答案 0 :(得分:2)
它需要在循环之外,因为如果它是空的,并且你没有生成任何列表项,那么你没有列表,所以你不应该生成ul开始和结束标记(因为列表没有列表项无效)。
答案 1 :(得分:2)
如果您根本不想要列表,那么您应该在第一个<ul>
的瘙痒之前执行此操作
if(count($quotesArray) > 0){
//Do your echos and loops in here
}
答案 2 :(得分:2)
您可以同时执行两项检查。
if($quotesArray){
echo '<ul>';
foreach ($quotesArray as $quote) {
if ($quote) {
echo '<li>' . stripslashes($quote->quote) . '</li>';
}
}
echo '</ul>';
}
答案 3 :(得分:2)
在循环中检查更简单 - 过滤所有值并称为array_filter()
function:
$quotesArray = array_filter($quotesArray);
echo "<ul>";
foreach($quotesArray as $quote){
echo "<li>".stripslashes($quote)."</li>";
};
echo "</ul>";
以上假设$quotesArray
包含字符串(或在字符串上下文中正常工作的元素),并且在转换为布尔值时,您不希望仅评估为false
的元素({{3} })。
此外您可以进一步简化代码:
$quotesArray = array_filter($quotesArray);
$quotesArray = array_map('stripslashes', $quotesArray);
echo '<ul><li>'.implode('</li><li>', $quotesArray).'</li></ul>';
如果您知道$quotesArray
至少包含一个元素。
修改强>
短版本,也检查是否应该生成列表(换句话说:处理后数组是否包含至少一个元素):
$quotesArray = array_map('stripslashes', array_filter($quotesArray));
if (!empty($quotesArray)) {
echo '<ul><li>'.implode('</li><li>', $quotesArray).'</li></ul>';
};
答案 4 :(得分:1)
当你说你想检查它是否为空时,你的意思是整个$ quotesArray还是其中的一个值?
如果您的意思是要检查数组中的值是否为空,您可以考虑这种方法:
echo '<ul>';
foreach ($quotesArray as $quote) {
if ($quote) {
echo '<li>' . stripslashes($quote) . '</li>';
}
}
echo '</ul>';