我使用for循环打印一些数据。我的代码工作正常,但是如果特定值为空则我想跳过行
我的代码
$count = count($cd);
for ($i = 0; $i < $count; $i++)
{
print'["'.$cd[$i][2].'", '.$cd[$i][4].', '.$cd[$i][5].','.$count.',"'.$cd[$i][8].'","'.$cd[$i][0].'", "'.strip_tags($cd[$i][3]).'","'.$cd[$i][6].'"]';
if ($i < ($count - 1))
{
echo ', ';
}
}
如果$cd[$i][2] and $cd[$i][4]
的值为空,则打印跳过此行
任何想法
答案 0 :(得分:2)
使用if
条件跳过空行并检查是否为空,然后打印。
$count = count($cd);
for ($i = 0; $i < $count; $i++)
{
if(!empty($cd[$i][2]) && !empty($cd[$i][4]))
print'["'.$cd[$i][2].'", '.$cd[$i][4].', '.$cd[$i][5].','.$count.',"'.$cd[$i][8].'","'.$cd[$i][0].'", "'.strip_tags($cd[$i][3]).'","'.$cd[$i][6].'"]';
if ($i < ($count - 1))
{
echo ', ';
}
}
答案 1 :(得分:0)
试试这样:
$count = count($cd);
for ($i = 0; $i < $count; $i++)
{
if(!empty($cd[$i][2]) && !empty( $cd[$i][4])) {
print'["'.$cd[$i][2].'", '.$cd[$i][4].', '.$cd[$i][5].','.$count.',"'.$cd[$i][8].'","'.$cd[$i][0].'", "'.strip_tags($cd[$i][3]).'","'.$cd[$i][6].'"]';
if ($i < ($count - 1))
{
echo ', ';
}
}
}
答案 2 :(得分:0)
有多种方法可以检查某些内容是否为“空白”:
if(empty($var))
- empty($var)
如果未设置,则变为true
,或者空值(空= 空字符串或零或 null 或 false )
if(!strlen($var))
- 这几乎是相同的,除非未设置变量,您将收到警告,并且零不为空在这种情况下显然是值(因为它检查了值的长度)。
if(!isset($var))
- isset($var)
为true
,否则为false
。因此,!isset($var)
恰恰相反,因为否定。
因此,根据您对空白的定义,您可能需要在此处检查不同的内容。 但总的来说,条件看起来像这样:
for ($i = 0; $i < $count; $i++)
{
if(empty($cd[$i][2]) && empty($cd[$i][4])) continue; // skip this line entirely
... // the rest of your code in the loop
}
答案 3 :(得分:0)
我采取了与其他人不同的方法......(使用foreach)
以此为例:
$count = count($cd);
$i = 0;
$sep = ',';
foreach($cd as $item){
if ($i == ($count - 1)){$sep = '';}
if(!empty($item[2]) && !empty($item[4])){
echo '["' . $item[2] . '", ' . $item[4] . ', ' . $item[5] . ',' . $count . ',"' . $item[8] . '","' . $item[0] . '", "' . strip_tags($item[3]) . '","' . $item[6] . '"]' . $sep;
}else{
$count --;
}
$i++;
}
不太确定它是否会慢一些,但我总是更喜欢foreach
声明for
声明。
所有批评欢迎