簡體   English   中英

PHP如何只增加4行CSV文件

[英]PHP How to increment only 4 rows of CSV file

我正在嘗試顯示CSV文件中的一些數據,並且只需要顯示前四行。 每行都在'ul'列表中。 現在一切都顯示了,所以所有ul都顯示了。 我試圖添加另一個“ while”循環,但是一切都壞了。

我敢肯定,這對於習慣於用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.";
            }

        ?>
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
}

同樣,未經測試,但僅說明了實現同一目標的另一種方法。

做一個步驟,證明它,然后繼續下一步。

如果它不起作用,請取消注釋,然后將問題追回去,這就是您必須思考和采取的行動。

高溫超導

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM