我正在尝试使用foreach
发布3个数组,并且由于某种原因,最后的break
不起作用,它会将整个列表(40+)输出到页面。< / p>
$file = fopen('names.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
shuffle($line);
$i = 0;
foreach ($line as $number) {
{
if($i==3){ break; } else {
$rtime = mt_rand(1, 7);
echo $number; }
$i++;
}
}
}
fclose($file);
它看起来很像:take.ms/cLgIh,而应该只显示其中3个用户名。
答案 0 :(得分:1)
您需要增加$i
,否则其值始终为 0
$i = 0;
foreach ($line as $number) {
$rtime = mt_rand(1, 7);
echo "$number";
if($i==3) break;
$i++;
}
您还需要检查您的while语句是否正在关闭
$file = fopen('names.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
shuffle($line);
$i = 0;
foreach ($line as $number) {
$rtime = mt_rand(1, 7);
echo $number;
if($i==3) break;
$i++;
}
} //check for this
正如我在你的代码示例中所看到的,它缺少右括号
另外,请从$ number中删除双引号,但这不是必需的。
echo $number
答案 1 :(得分:1)
你有一个错误,就是休息在if($i==3)
并且你声明了$i =0
,但是从不增加它。所以$i
永远不会到达3.
答案 2 :(得分:1)
<?php
$i = 0;
//I have opened my contact.csv :P
$file = fopen('contact.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
shuffle($line);
foreach ($line as $number) {
{
if($i==3){ exit(); } else {
$rtime = mt_rand(1, 7);
echo "<br/> i = ".$i.$number.", "; }
}
$i++;
}
}
fclose($file);
?>
答案 3 :(得分:1)
我从这里下载第一个样本CSV: - http://www.sample-videos.com/download-sample-csv.php
此代码适用于我: -
<?php
$file = fopen('SampleCSVFile_2kb.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
shuffle($line);
$i = 0;
foreach ($line as $number) {
if($i==3){
exit;
} else {
$rtime = mt_rand(1, 7);
echo $number.'<br/>';
echo $i.'<br/>'; // you can remove this line
}
$i++;
}
}
fclose($file);
?>
每页刷新输出: -
注意: - 如果仍然无效,请检查您的CSV文件。可能是它已损坏。
结论: - 在所有讨论结束后,您的CSV文件已损坏。但是也需要改进代码