PHP表达式“和语句”?

PHP表达式“和语句”?,php,expression,Php,Expression,我有这个csv文件,它有两行。 第一个显示城市名称,第二个显示数字统计 例如: [City] [Count of dogs] [Los Angeles] [100] [New York] [-] 现在我的问题是,我不想把这个城市的数据和它的统计数据显示为狗的数量 这就是我现在尝试的: <?php echo"<table border='1'>"; if (($handle = fopen("table.csv", "r")) !==

我有这个csv文件,它有两行。 第一个显示城市名称,第二个显示数字统计

例如:

[City]        [Count of dogs]
[Los Angeles] [100]
[New York]    [-]
现在我的问题是,我不想把这个城市的数据和它的统计数据显示为狗的数量

这就是我现在尝试的:

    <?php
    echo"<table border='1'>";
    if (($handle = fopen("table.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
            echo "<tr>";
            $num = count($data);
            for ($i=0; $i < $num; $i++) {
                $string = $data[$i];
                $m = preg_match("#\w{2,}#", $string, $match); 
                if ($m) { 
                        echo "<td>". $data[$i];
                     $m = preg_match("#\d{2}#", $string, $match); 
                     if ($m) { 
                        echo $data[$i] . "<br /> </td>";
                     }  
                } 
            }
            echo"</tr>";
        }
        fclose($handle);
    }
    echo"</table>";

?> 
它现在没有显示,但它显示了城市,我想知道表达式是否存在and语句,或者是否有其他方法来实现这一点


它现在的样子:[IMG]

只是-?然后你可以检查一下

 while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
    if ($data[1] != "-") {
       echo "<tr>";
       ....
       echo "</tr>";
    }
 }
使用函数检查第二列中出现的-。如果第二列不包含任何-,则打印该行

while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
    $num = count($data);
    if (strpos($data[$num-1],'-') === false) {
        echo "<tr>";
        for ($i=0; $i < $num; $i++) {
            $string = $data[$i];
            $m = preg_match("#\w{2,}#", $string, $match); 
            if ($m) { 
                    echo "<td>". $data[$i];
                 $m = preg_match("#\d{2}#", $string, $match); 
                 if ($m) { 
                    echo $data[$i] . "<br /> </td>";
                 }  
            } 
        }
        echo"</tr>";
    }
}

如果,dog字段的计数是过滤字段,则在显示之前先取该字段

在这里,我检查了数字,因为狗的计数始终是数字,您可以使用任何其他逻辑,就像使用preg_match一样

 <?php
 while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
if(is_numeric($data[1])) {
//proceed your logic here
}
else {
continue;//to go for the next row
}
 ?>

假设您的CSV看起来像您的示例,您可以跳过狗数为破折号的行

while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
    if( $data[1] == '-' ) {
        continue;
    }
    echo "<tr>";
    // ...
}

$data[$i]看起来怎么样?$data[$i]是csv文件中的所有内容,如示例所示。您可以编辑您的问题并添加由上述代码生成的HTML吗?$data[$i]指的是什么字符串。顺便说一句,为什么要回显$data[$i]twiceHi,我已经添加了它的外观图片,不知道如何使用JSFIDLE添加csv文件@user2781994我已经把它放了两次,第一个表达式检查超过2个单词,第二个检查它是否包含2个数字,所以不-不,我的CSV包含超过1个。我的意思是狗字段。如果该字段==-,上面的代码将围绕整行进行分支,并且只有当它!=-,才绘制该行。嗨,这个解决方案实际上给出了相同的结果:。
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
    if( !is_numeric($data[1]) ) {
        continue;
    }
    echo "<tr>";
    // ...
}
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
    if( $data[1] == '-' ) {
        continue;
    }
    echo "<tr>";
    $num = count($data);
    for ($i=0; $i < $num; $i++) {
        echo "<td>" . $data[$i] . "</td>";
    }
    echo"</tr>";
}