php csv to array


php csv to array

我对php相当陌生,这是从堆栈溢出问题中得到的,似乎无法让它为我工作。

<?php
if (($handle = fopen("fullbox.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    echo "<pre>".print_r($data)." <br /></pre>";
}
fclose($handle);
}
echo $data[1];
?>

我需要使用大量的产品(我可以从csv文件中提取)来设置几个数组进行定价。Fullbox.csv仅由10个数字组成,其中有2个十分位数。我一直在尝试测试这个,这是我得到的输出:

阵列([0]=>8.53)

阵列([0]=>4.74)

阵列([0]=>5.00)

阵列([0]=>2.50)

阵列([0]=>6.48)

阵列([0]=>3.99)

阵列([0]=>8.53)

阵列([0]=>4.74)

阵列([0]=>8.53)

阵列([0]=>4.74)

为什么数组在数组的[0]占位符中设置所有值,以及为什么每行之间都有一个1。提前感谢。

更新如果这是一个十项数组,那么它应该返回数组中1项的值,但它没有。我基本上只需要存储所有的价格,这样我以后就可以将它们用作变量。我不需要打印它们。再次感谢。

echo $data[1];

print_r默认不返回格式化的数组;它输出它并返回CCD_ 2。传递true作为第二个参数。

echo "<pre>".print_r($data, true)." <br /></pre>";

所有值都在数组的0索引中,因为数组从0开始。那里没有什么问题。

试试这个:

$f = fopen(yourfile, "r");
$fs = filesize(yourfile);
$content = fread($f, $fs);
$lines = explode("'n", $content);
$result = array();
foreach($lines as $line) $result[] = explode(",", $line);

CSV,如逗号分隔值,每行都是一个数组。所以每一行——即使它只有一个值——都是数组。

此外,您不需要回显"print_r"。

您还可以使用以下函数从CSV读取数据,并使用usort()函数进行排序。

http://www.pearlbells.co.uk/how-to-sort-a1a2-z9z10aa1aa2-az9az10-using-php/

 Read data from the CSV
function readCSV() {
 $csv = array_map('str_getcsv', file('data.csv'));
 array_shift($csv); //remove headers
 $csvData = splitandSort($csv);
 createCSV($csvData);
}