感谢您的回复。我会尝试一下并更新我的问题,我有自己的代码,但显示全部内容有点混乱。我的问题是索引不正确。
我使用:
$products = array();
$lines = file('data_stock.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value)
{
$products[$key] = str_getcsv($value);
}
我设法读取数据,但这会给我一个错误:
if ((int)$products[$_sku] > 0 && isset($products[$_sku])) {
错误:注意:未定义索引:test-product-1 in .... “ test-product-1”来自csv文件中的sku列
输出
echo '<pre>';
print_r($products);
echo '</pre>';
给予:
Array
(
[0] => Array
(
[0] => sku
[1] => qty
)
[1] => Array
(
[0] => test-product-1
[1] => 3
)
[2] => Array
(
[0] => test-product-2
[1] => 6
)
[3] => Array
(
[0] => test-product-3
[1] => 30
)
)
我正在尝试使用csv文件导入到阵列中进行替换
$products = [
'test-product-1' => 3,
'test-product-2' => 6,
'test-product-3' => 30
];
但是,当我从CSV文件导入时,无法生成相同的数组,这会导致问题。 CSV数组示例:http://php.net/manual/en/function.str-getcsv.php
CSV文件:
sku,qty
test-product-1,3
test-product-2,6
test-product-3,30
下一步是扩展脚本以处理价格。我还需要能够从CSV文件中提取这些变量。并在for循环中使用它们。
sku,qty,price,special_price
test-product-1,3,100,50
test-product-2,6,99,
test-product-3,30,500,300
答案 0 :(得分:0)
我在项目中使用了以下代码,它对我来说很好用。
我使用了csv_reader PHP库。 您必须将此库放在库文件夹中,然后将其导入要读取csv的文件中。
include_once('../csv_reader.php');
$read = new CSV_Reader;
$read->strFilePath = "file_name_with_path";
$read->strOutPutMode = 0; // 1 will show as HTML 0 will return an array
$read->setDefaultConfiguration();
$read->readTheCsv();
$dataArr = array();
$dataArr = $read->arrOutPut;
在$dataArr
中,我会得到结果,
答案 1 :(得分:0)
我认为问题在于,当您存储行时,您存储的行将由行号索引({$key
将是文件中的行号)。相反,我认为您想按CSV文件的第一列对其进行索引。因此,首先提取数据(就像已经使用str_getcsv()
一样,然后在第一列([0]
处索引)...
$products = array();
$lines = file('data_stock.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $value)
{
$data = str_getcsv($value);
$products[$data[0]] = $data;
}
如果要添加第一行作为标题并使用它来键入数据...
$products = array();
$lines = file('data_stock.csv', FILE_IGNORE_NEW_LINES);
$headers = str_getcsv(array_shift($lines));
$products = array();
foreach ( $lines as $value ) {
$data = str_getcsv($value);
$products[$data[0]] = array_combine($headers, $data);
}
使用array_shift()
删除数组的第一行,然后使用array_combine()
中的这一行作为每一行的键。有了测试数据,您将得到类似...
Array
(
[test-product-1] => Array
(
[sku] => test-product-1
[qty] => 3
[price] => 100
[special_price] => 50
)