アップロードされた CSV ファイルに基づいて追跡番号を更新する PHP スクリプトに取り組んでいます。インポートはしばらくの間正常に機能し、その後、エクスポートで値が引用符で囲まれ始めました。これで問題ないと思いましたが、ファイルを拒否し始めました。デバッグと var_dumps を行ったところ、これまでに見たことのない非常に奇妙な状況を発見しました -同じ名前の 2 つのインデックスを持つ連想配列。フィールドを設定するコードを実行し (以下を参照)、次の行を追加しました。
$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"
}
簡潔にするために一部のフィールドを削除しました。ご覧のとおり、2 つの["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"
最初の文字を3 文字長くします。
var_export は依然として同一のインデックスをもたらしました。
これらの目に見えない文字を取り除くにはどうすればよいですか? ですでに試し$v[trim($n)] = @$data[$k];
ましたforeach()
。