PHP表达式“和语句”?
我有这个csv文件,它有两行。 第一个显示城市名称,第二个显示数字统计 例如: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")) !==
[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>";
}