foreach不会在休息时停止循环

时间:2016-09-23 23:29:54

标签: php foreach

我正在尝试使用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个用户名。

4 个答案:

答案 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);
?>

每页刷新输出: -

http://prntscr.com/cln2ju

http://prntscr.com/cln2nf

注意: - 如果仍然无效,请检查您的CSV文件。可能是它已损坏。

结论: - 在所有讨论结束后,您的CSV文件已损坏。但是也需要改进代码