>

100 개의 행이있는 CSV 파일이 있지만 $data [0] [1] [2] [3] 및 $data [2] [2] [3]와 같이 임의로 5 개를 출력하려고합니다.

보이게되었지만 그룹으로 표시됩니다

<?php 
 $row = 1;
 if (($handle = fopen("Book1.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
       $row++;
       for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
       }
      }
   fclose($handle);
 }
?>

다음과 같이 보이시겠습니까 :

some data:<?php echo $data[0][1][2][3];?>
more data:<?php echo $data[1][1][2][3];?>
more data:<?php echo $data[5][1][2][3];?>
more data:<?php echo $data[8][1][2][3];?>


  • 답변 # 1

    파일을 배열에로드하면 "임의의"숫자 목록이 나오고 해당 행을 꺼내어 str_getcsv 를 사용하기가 쉽습니다.  당신이 fgetcsv 를 사용한 것과 같은 방법  귀하의 코드에서. 전체 파일을 메모리로 읽어야하기 때문에 가장 효율적인 방법은 아닙니다. 그러나 난수를 선택하기 전에 줄 수를 결정해야합니다.

    <?php 
    $rows = file("Book1.csv");
    $len = count($rows);
    $rand = [];
    while (count($rand) < 5) {
        $r = rand(0, $len);
        if (!in_array($r, $rand)) {
            $rand[] = $r;
        }
    }
    foreach ($rand as $r) {
        $csv = $rows[$r];
        $data = str_getcsv($csv);
        // now do whatever you want with $data, which is one random row of your CSV
        echo "first column from row $r: $data[0]\n";
    }
    
    

  • 이전 html5 - 속성 이름의 일부로 요소를 선택하는 방법
  • 다음 scala - 값의 유형을 얻기 위해 준 따옴표를 어떻게 사용합니까?