簡體   English   中英

讀取 .csv 文件 PHP-ML

[英]Reading in .csv file PHP-ML

我正在使用 php-ml 並接收一個包含 6 列和數千行的 .csv 文件,我希望每個數組的每個第 5 個元素(列)都保存在 $samples 中。 我嘗試了以下方法,它為我提供了每個數組的第一個元素。

$dataset = new CsvDataset('myNewCsvFile.csv', 1);     
$samples = [];

        foreach ($dataset->getSamples() as $sample) {
            $samples[] = $sample[0];
        }

我不明白為什么這不能在我的 .csv 中完全讀取,如果我將 sample[0] 的 indext 更改為任何其他索引,我會收到以下錯誤:

Notice: Undefined offset: 1 in C:\xampp\htdocs\test\index.php on line 19

這向我表明它只讀取每行中的第一列,如果我打印出數組 Samples 我得到了我所期望的結果,這證明如下:

    Array
(
    [0] => 1157
    [1] => 1157
    [2] => 1157
    [3] => 1157
    [4] => 1157
    [5] => 1157
    [6] => 1157
    [7] => 1157
    [8] => 1157
    [9] => 1157
    [10] => 1157
    [11] => 1157
    [12] => 1157
    [13] => 1157
    [14] => 1157
    [15] => 1157
    [16] => 1157
    [17] => 1157
    [18] => 1157
    [19] => 1157
    [20] => 1157
    [21] => 1157
    [22] => 1157

等等哪個是正確的。 誰能解釋為什么這不是在我的完整 .csv 文件中讀取?

正如參考文檔所示,您應該向構造函數傳遞許多列作為第二個參數讀取,並且您只要求它提供一列。 在下面的代碼段中,我輸入了另一個數字以獲得更多列。

use Phpml\Dataset\CsvDataset;

// the third argument makes it ignore the heading row
$dataset = new CsvDataset('myNewCsvFile.csv',4,true);     

foreach ($dataset->getSamples() as $sample) {
    print_r($sample);
}

輸出:

Array
(
    [0] => 101
    [1] => 201
    [2] => 301
    [3] => 401
)
Array
(
    [0] => 102
    [1] => 202
    [2] => 302
    [3] => 402
)

myNewCsvFile.csv是;

┌─────┬─────┬─────┬─────┬─────┬─────┐
│  1  │  2  │  3  │  4  │  5  │  6  │
├─────┼─────┼─────┼─────┼─────┼─────┤
│ 101 │ 201 │ 301 │ 401 │ 501 │ 601 │
│ 102 │ 202 │ 302 │ 402 │ 502 │ 602 │
└─────┴─────┴─────┴─────┴─────┴─────┘

暫無
暫無

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

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