У меня есть этот CSV-файл, который имеет 2 строки.
Первый показывает название города, а второй показывает номер (статистика)
Пример:
[City] [Count of dogs]
[Los Angeles] [100]
[New York] [-]
Теперь моя проблема в том, что я не хочу показывать город и статистику, [-]
как [Count of dogs]
,
Вот что я попробовал прямо сейчас:
<?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>";
?>
Сейчас он не показывает «-», но показывает город, мне было интересно, существует ли «и-оператор» для выражений, или есть другой способ сделать это?
Изображение того, как это выглядит прямо сейчас: [IMG]http://i59.tinypic.com/14sl4xg.jpg[/IMG]
Это просто «-«? Тогда вы можете проверить это …
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
if ($data[1] != "-") {
echo "<tr>";
....
echo "</tr>";
}
}
Если подсчет поля собаки является полем фильтрации, то сначала возьмите это поле перед отображением,
Здесь я проверил на числовое, потому что число собак всегда в числовом. Вы можете использовать любую другую логику, как вы сделали с помощью 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>";
// ...
}
Или, если чертой также может быть любой другой не номер:
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
if( !is_numeric($data[1]) ) {
continue;
}
echo "<tr>";
// ...
}
Кроме того, я не знаю, что другой if
чеки, но мне кажется, что вы хотите просто echo
данные
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>";
}
Проверьте вхождения -
во втором столбце с помощью StrPos функция. Если второй столбец не содержит каких-либо -
затем напечатайте строку
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>";
}
}