我正在尝试,从CSV文件中显示一些数据,并且只需要显示4个第一行。每行都在'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.";
}
?>
答案 0 :(得分: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
}
同样,未经测试,但只说明了实现相同目标的另一种方法。
做一步,证明,转到下一步。
如果它不起作用,取消注释并追回问题 - 这就是你必须思考和行动的方式。
HTH