无法从数组中获取值

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 的引用。