PHP-выражение & quot; и-оператор & quot ;?

У меня есть этот 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]

0

Решение

Это просто «-«? Тогда вы можете проверить это …

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

Другие решения

Если подсчет поля собаки является полем фильтрации, то сначала возьмите это поле перед отображением,

Здесь я проверил на числовое, потому что число собак всегда в числовом. Вы можете использовать любую другую логику, как вы сделали с помощью 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
}
?>
0

Предполагая, что ваш 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>";
}
0

Проверьте вхождения - во втором столбце с помощью 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>";
}
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector