如何使用CSV文件进行foreach。
假设我已经打开了一个看起来像这样的csv文件---
Array
(
[0] => Category ID
[1] => Category
[2] => Country
[3] => Original price
[4] => Reduce price
)
Array
(
[0] => 11
[1] => Phone cases
[2] => Denmark
[3] => 90,99
[4] => 120
)
Array
(
[0] => 13
[1] => Shoes
[2] => Denmark
[3] => 180,99
[4] => 200
)
那么我怎样才能将所有数据循环存储在一个数组中。
我试过这样,但它不起作用。
$all_data = array();
foreach ($result as $key => $obj) {
$doc = array();
$doc['id'] = $obj[$key];
$doc['category'] = $obj[$key];
$doc['country'] = $obj[$key];
$doc['original_price'] = $obj[$key];
$doc['reduce_price'] = $obj[$key];
// array push all documents into $all_data
$all_data [] = $doc;
}
任何人都知道我如何循环这些数据!
答案 0 :(得分:2)
只需使用PHP documentation:
if (($handle = fopen("yourfile.csv", "r")) !== FALSE) {
$all_data = array();
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($i==0){ continue; $i=1; }
// Remove the first iteration as it's not "real" datas
$all_data[] = array(
'id' => $data[0],
'category' => $data[1],
'country' => $data[2],
'original_price' => $data[3],
'reduce_price' => $data[4],
);
}
fclose($handle);
}
它必须达到你想要的。使用内置功能总是更好。如果你不能使用这个,请告诉我。
编辑:
正如@Blag所说:
您可以使用file_get_contents()和str_getcsv()
但这是一种不同的方法,它将整个文件加载到字符串(file_get_contents)中并在第二次解析字符串(str_getcsv)。
答案 1 :(得分:0)
这可以让您了解如何继续:
$objsOut=array();
foreach ($result as $key => $obj) {
$objOut = array(
'id'=>$obj[0]
);
$objsOut[]=$objOut;
}