我正在编写一个 PHP 脚本,该脚本会根据上传的 CSV 文件更新一些跟踪号。导入工作了一段时间,然后导出开始在值周围加上引号。我认为这会很好,但它开始拒绝文件。做了一些调试和 var_dumps,我发现了一个我以前从未见过的非常奇怪的情况——一个具有两个同名索引的关联数组。我运行了设置字段的代码(如下所示)并添加了一行:
$v['order_id'] = '119205';
运行该行后,var_dump 如下:
array(15) {
["order_id"]=>
string(6) "119205"
["Tracking Number"]=>
string(22) "6735675476254654756"
["Postage"]=>
string(4) "1.64"
["order_id"]=>
string(6) "119205"
}
为简洁起见,删除了一些字段。如您所见,有两个["order_id"]
索引。这怎么可能?
这是设置上面转储的数组值的代码:
$v = array();
foreach ($map as $k => $n) {
$v[$n] = @$data[$k];
}
$map
作为 CSV 标题行。尝试在$v['order_id']
不运行该$v['order_id'] = '119205';
行的情况下进行引用会导致此错误:
Notice: Undefined index: order_id in /dir/to/php/file/php_file.php</b> on line 29
$v
手动设置索引按预期工作,毫无问题地提取其余数据。
编辑:
转储 array_keys 导致:
[0]=>
string(11) "order_id"
和:
[14]=>
string(8) "order_id"
使第一个三个字符更长。
var_export 仍然产生相同的索引。
我怎样才能摆脱这些看不见的字符?我已经$v[trim($n)] = @$data[$k];
在foreach()
.