这是csv文件上传的示例数组,我正在处理
$csvData = array(7) {
[" Account Number"]=> string(32) " 1011001562781010"
[" Posting Date"]=> string(10) "07/08/2014"
[" Value Date"]=> string(10) "07/08/2014"
[" Description"]=> string(46) "Cash Withdrawal by Cheque173320--TT1421957901"
[" Debit Amount"]=> string(7) "2000.00"
[" Credit Amount"]=> string(0) ""
["Running Balance"]=> string(9) "388392.62"
}
尝试使用 $ csvData 获取值时,出现以下错误,
注意:未定义的索引:帐号
这是我的代码:
foreach ($csvData as $csvRow) {
$csvData[$key] =$csvRow[$this->_csvColumnAccountNumber];
if (strtolower($csvRow[$this->_csvColumnAccountNumber]) === $csv_ied_account_number) {
$CsvValues[$key] = $csvRow[$this->_csvColumnCreditAmount];
$CsvValues[$key] = $csvRow[$this->_csvColumnDebitAmount];
}
}
我真的被困在这个小问题上。 请尽快帮我解决这个问题。
提前致谢。
答案 0 :(得分:0)
如果你的数据真的像这样:
array(7) { [" Account Number"]=> string(32) " 1011001562781010"
[" Posting Date"]=> string(10) "07/08/2014"
....
[" Credit Amount"]=> string(0) ""
["Running Balance"]=> string(9) "388392.62" }
然后尝试阅读密钥"Account Number"
绝对将失败。因为密钥"Account Number"
和" Account Number"
(A
之前有一个空格)是不同的密钥。您应该使用完全键名来访问数组元素。我建议您重构使用值填充$csvData
的过程,并使用trim
函数作为键。
答案 1 :(得分:0)
$ csvData 是一个单维关联数组。如果您运行foreach ($csvData as $csvRow)
$ csvRow 将成为每个值(' 1011001562781010',' 07/08 / 2014',依此类推)这不是你想要的,考虑到你正试图访问那些无法获得的密钥。
所以第一个问题是你不需要 foreach 。 $csvData[' Account Number']
就是你追求的目标。
这给我们带来了第二个问题。您的密钥中有空格。在创建 $ csvData 时,您应该对数据运行 trim() 以消除空白。否则,您可以执行 array_walk 并使用匿名函数修剪数据:
array_walk($csvData, function($value, $key) use (&$csvData) {
unset($csvData[$key]);
$csvData[trim($key)] = $value;
});
以上是初学者非常复杂的例子。这样做是通过 $ csvData 中的每个元素来运行并运行提供的回调(函数)。此功能将取消设置当前键并定义新的修剪键。您必须使用use (&$csvData)
在函数范围内提供对 $ csvData 的引用。