如果值为空,则使用for循环php跳过行项

时间:2014-05-20 12:18:32

标签: php

我使用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]的值为空,则打印跳过此行

任何想法

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)

有多种方法可以检查某些内容是否为“空白”:

  1. if(empty($var)) - empty($var)如果未设置,则变为true,或者空值(空= 空字符串 null false

  2. if(!strlen($var)) - 这几乎是相同的,除非未设置变量,您将收到警告,并且不为空在这种情况下显然是值(因为它检查了值的长度)。

  3. 如果设置了变量,
  4. if(!isset($var)) - isset($var)true,否则为false。因此,!isset($var)恰恰相反,因为否定。

  5. 因此,根据您对空白的定义,您可能需要在此处检查不同的内容。 但总的来说,条件看起来像这样:

    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声明。

所有批评欢迎