我正在使用php-ml并且使用包含6列和数千行的.csv文件,我希望每个数组的每个第5个元素(列)都保存在$ samples中。我尝试了以下内容,它为我提供了每个数组的第一个元素。
$dataset = new CsvDataset('myCsvFile.csv', 1);
$samples = [];
foreach ($dataset->getSamples() as $sample) {
$samples[] = $sample[0];
}
然而,这给了我每个数组的第一个元素,如果我改变$sample[0] to $sample[4]
,因为我在语法上认为这将起作用,我在所讨论的行上得到一个未定义的偏移量。我是PHP新手,不明白为什么会这样。
如果代码保留如上并打印出来,则如下所示:
Array
(
[0] => 1157
[1] => 1157
[2] => 1157
[3] => 1157
[4] => 1157
[5] => 1157
[6] => 1157
[7] => 1157
[8] => 1157
......等等。
答案 0 :(得分:0)
你可以试试这个
$csv = array();
$csvNewArray = array();
$lines = file('myCsvFile.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value)
{
$csv[$key] = str_getcsv($value);
if(isset($csv[$key][4])){
$csvNewArray[$key] = $csv[$key][4];
}
}
答案 1 :(得分:0)
使用fgetcsv()
从文件中读取,然后访问这些数组的相应元素以获取每行的第五项。
$fh = fopen("myCsvFile.csv", "r") or die("Can't open CSV file\n");
$csv = array();
$sample = array();
while ($row = fgetcsv($fh)) {
$csv[] = $row;
$sample[] = $row[4];
}
fclose($fh);