无法从数组中获取值
cannot get the values from an array
这是我正在处理的 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 获取值时,出现以下错误,
Notice: Undefined index: Account Number
这是我的代码:
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];
}
}
我真的被这个小问题困住了。
请尽快帮我解决这个问题。
提前致谢。
如果你的数据真的是这样:
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
之前有一个 space)是不同的键。您应该使用 exact 键名来访问数组元素。我建议您重构用值填充 $csvData
的过程,并为键使用 trim
函数。
$csvData 是一维关联数组。如果您 运行 foreach ($csvData as $csvRow)
$csvRow 将成为每个值('1011001562781010'、'07/08/2014' 等等),这不是你想要什么,考虑到你正在尝试访问不可用的密钥。
所以第一个问题是你不需要 foreach。 $csvData[' Account Number']
就是你所追求的。
这给我们带来了第二个问题。您的密钥中有白色 space。你应该 运行 trim() on the data when creating $csvData to get rid of the whitespace. Otherwise, you can do an array_walk 和 trim 具有匿名函数的数据:
array_walk($csvData, function($value, $key) use (&$csvData) {
unset($csvData[$key]);
$csvData[trim($key)] = $value;
});
以上是一个非常复杂的例子,适合初学者。它所做的是遍历 $csvData 和 运行 中提供的回调(函数)中的每个元素。此函数将取消设置当前键并定义一个新的 trimmed 键。您必须使用 use (&$csvData)
在函数范围内提供对 $csvData 的引用。
这是我正在处理的 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 获取值时,出现以下错误,
Notice: Undefined index: Account Number
这是我的代码:
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];
}
}
我真的被这个小问题困住了。 请尽快帮我解决这个问题。
提前致谢。
如果你的数据真的是这样:
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
之前有一个 space)是不同的键。您应该使用 exact 键名来访问数组元素。我建议您重构用值填充 $csvData
的过程,并为键使用 trim
函数。
$csvData 是一维关联数组。如果您 运行 foreach ($csvData as $csvRow)
$csvRow 将成为每个值('1011001562781010'、'07/08/2014' 等等),这不是你想要什么,考虑到你正在尝试访问不可用的密钥。
所以第一个问题是你不需要 foreach。 $csvData[' Account Number']
就是你所追求的。
这给我们带来了第二个问题。您的密钥中有白色 space。你应该 运行 trim() on the data when creating $csvData to get rid of the whitespace. Otherwise, you can do an array_walk 和 trim 具有匿名函数的数据:
array_walk($csvData, function($value, $key) use (&$csvData) {
unset($csvData[$key]);
$csvData[trim($key)] = $value;
});
以上是一个非常复杂的例子,适合初学者。它所做的是遍历 $csvData 和 运行 中提供的回调(函数)中的每个元素。此函数将取消设置当前键并定义一个新的 trimmed 键。您必须使用 use (&$csvData)
在函数范围内提供对 $csvData 的引用。