0

我对 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];
4

4 回答 4

2

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

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

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

于 2012-07-12T14:05:29.023 回答
1

尝试这个:

$f = fopen(yourfile, "r");
$fs = filesize(yourfile);
$content = fread($f, $fs);

$lines = explode("\n", $content);
$result = array();
foreach($lines as $line) $result[] = explode(",", $line);
于 2012-07-12T14:06:11.793 回答
0

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

你也不需要回显“print_r”。

于 2012-07-12T14:06:41.410 回答
0

您还可以使用以下函数从 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);
}
于 2016-11-02T16:15:54.103 回答