我使用php-ml并接收了一个6列数千行的.csv文件,我希望每个数组的每5个元素(列)都保存在$samples中。我尝试了下面的方法,它给出了每个数组的第一个元素。
$dataset = new CsvDataset('myNewCsvFile.csv', 1);
$samples = [];
foreach ($dataset->getSamples() as $sample) {
$samples[] = $sample[0];
}我不明白为什么这不能在我的.csv中完全读取,如果我将sample的索引改为任何其他索引,我会得到以下错误:
Notice: Undefined offset: 1 in C:\xampp\htdocs\test\index.php on line 19这表明它只读取每行中的第一列,如果我打印出数组样本,就会得到预期的结果,这一点得到了证明,如下所示:
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文件中没有读到这个吗?
发布于 2018-05-29 17:02:21
作为reference document shows,您应该向构造函数传递一些要作为第二个参数读取的列,并且您只向它请求一列。在下面的代码片段中,我输入了另一个数字来获得更多的列。
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 │
└─────┴─────┴─────┴─────┴─────┴─────┘https://stackoverflow.com/questions/43695004
复制相似问题