我对 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
默认不返回格式化的数组;它输出它并返回1
。传递 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 是每行一个数组。所以每一行 - 即使它只有 1 个值 - 都是数组。
你也不需要回显“print_r”。
您还可以使用以下函数从 CSV 读取数据,并使用 usort() 函数进行排序。
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);
}