首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取.csv文件PHP-ML

读取.csv文件PHP-ML
EN

Stack Overflow用户
提问于 2017-04-29 19:16:50
回答 1查看 334关注 0票数 1

我使用php-ml并接收了一个6列数千行的.csv文件,我希望每个数组的每5个元素(列)都保存在$samples中。我尝试了下面的方法,它给出了每个数组的第一个元素。

代码语言:javascript
复制
$dataset = new CsvDataset('myNewCsvFile.csv', 1);     
$samples = [];

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

我不明白为什么这不能在我的.csv中完全读取,如果我将sample的索引改为任何其他索引,我会得到以下错误:

代码语言:javascript
复制
Notice: Undefined offset: 1 in C:\xampp\htdocs\test\index.php on line 19

这表明它只读取每行中的第一列,如果我打印出数组样本,就会得到预期的结果,这一点得到了证明,如下所示:

代码语言:javascript
复制
    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文件中没有读到这个吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-29 17:02:21

作为reference document shows,您应该向构造函数传递一些要作为第二个参数读取的列,并且您只向它请求一列。在下面的代码片段中,我输入了另一个数字来获得更多的列。

代码语言:javascript
复制
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);
}

输出:

代码语言:javascript
复制
Array
(
    [0] => 101
    [1] => 201
    [2] => 301
    [3] => 401
)
Array
(
    [0] => 102
    [1] => 202
    [2] => 302
    [3] => 402
)

并且myNewCsvFile.csv是;

代码语言:javascript
复制
┌─────┬─────┬─────┬─────┬─────┬─────┐
│  1  │  2  │  3  │  4  │  5  │  6  │
├─────┼─────┼─────┼─────┼─────┼─────┤
│ 101 │ 201 │ 301 │ 401 │ 501 │ 601 │
│ 102 │ 202 │ 302 │ 402 │ 502 │ 602 │
└─────┴─────┴─────┴─────┴─────┴─────┘
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43695004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档