для цикла — PHP Как увеличить только 4 строки файла CSV

Я пытаюсь, чтобы отобразить некоторые данные из файла CSV, и нужно показать только 4 первых строки. Каждый ряд находится внутри 'ul' список. Прямо сейчас все показывает, так что все ul отображаются. Я пытался добавить еще один цикл «пока», но все сломалось.

Я уверен, что это легко для тех, кто привык кодировать в php. Я сейчас изучаю php, поэтому тщательно изучу хороший ответ, чтобы понять, какие изменения мне нужно сделать. Вот код:

<?php

$row = 1;
if (($handle = fopen($this->getBaseUrl()."csvfile/csv_test.csv", "r")) !== FALSE) {

echo '<ul>';

$count = 0;
while (($data = fgetcsv($handle, 1000, ",",'"')) !== FALSE) {

$name=$data[0];
$bonus=$data[1];
$start=$data[2];
$end=$data[3];
$brand=strtok($name, " - ");

$count++;
echo
'<li><ul><li><img width="90" height="40" src="'
.$this->getSkinUrl('images/logos/').strtolower($brand).'.jpg" /></li>';
echo '<li>'.$name.'</li>';
echo '<li class="bonus"><strong>'.$bonus.'</strong></li>';
echo '<li><span class="green">Start: '.$start.'</span></li>';
echo '<li><span class="red"><strong>end: '.$end.'</strong></span></li>';
echo '<li class="pdf"><a target="_blank" href="'
.$pdf.'" title=""><img src="'.$this->getSkinUrl('images/icon-pdf.png')
.'"/><br/>PDF</a></li></ul></li>';
?>

<?php
}
echo '</ul>';
fclose($handle);
}

else {
echo "NOPE.";
}

?>

0

Решение

while (($data = fgetcsv($handle, 1000, ",",'"')) !== FALSE)

является эквивалентом

while(true)

если вы добавите больше элементов к условию, вы будете проверять

while(true && true) // so loop carries on

так что если он найдет

while(true && false) // equates to false, so loop will stop

это останавливается.

так с правильными скобками, если у вас было:

while (
($data = fgetcsv($handle, 1000, ",",'"')) !== false // true
&&
$count < 5 // true
){}

Извините, но я не в состоянии проверить то, что я только что написал, но в принципе это ОДИН СПОСОБ остановиться на 4 итерациях.

Есть много других, многие из них более читабельны, чем эта.

Но я просто хотел ответить на ваш ближайший вопрос.

Я считаю, что foreach () намного легче читать, что-то вроде дампов, поэтому вы ЗНАЕТЕ, что происходит, вместо того, чтобы угадывать, что должно происходить:

$data = fgetcsv($handle, 1000, ",",'"');
// var_dump($data) // uncomment this to see what is happening
$count = 1;
foreach($data as $row){
if($count === 5) break;
// var_dump($row); // uncomment this to see what is happening

echo $row[0];
$count++;
// var_dump($count); // uncomment this to see what is happening
}

Опять же, не проверено, но иллюстрирует только еще один способ достичь того же.

Сделай один шаг, докажи это, переходи к следующему шагу.

Если это не сработает, раскомментируйте строки и отследите проблему — так вы должны думать и действовать.

НТН

0

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

Других решений пока нет …

По вопросам рекламы [email protected]