Как использовать первую строку CSV, которую я обрабатываю с помощью fgetcsv(), в качестве ключа к массиву, в который я помещаю каждую строку? Поэтому вместо того, чтобы иметь ключи элемента $line[0]
, $line[6]
и т. Д., Я могу просто использовать $line['order-id']
и $line['purchase-date']
.Использование первой строки CSV в качестве ключей массива
Это происходит только потому, что иногда используемый мной источник данных переключает строки вокруг, поэтому им нужно ссылаться на имя столбца, чтобы убедиться, что я выбираю правильные данные. Вот код, который я сейчас использую:
// create a new array that will be a child to $array for each order, contains details.
while (($line = fgetcsv($file,'',' ','\n')) !== FALSE) {
// count (for email later on)
if(!isset($count)) {
$count = count($line);
}
// add to new array (subarray)
$individualarray = array(
'order-id' => $line[0],
'buyer-name' => ucwords($line[11]),
'purchase-date' => $line[6],
'email-address' => $line[10]
);
$num++;
// add to the array of all orders
$array[$num] = $individualarray;
}
//remove first record from array, these are the headers.
unset($array[1]);
// close file
fclose($file);
Вот образец CSV я использую:
amazon-order-id merchant-order-id purchase-date last-updated-date order-status fulfillment-channel sales-channel order-channel url ship-service-level product-name sku asin item-status quantity currency item-price item-tax shipping-price shipping-tax gift-wrap-price gift-wrap-tax item-promotion-discount ship-promotion-discount ship-city ship-state ship-postal-code ship-country promotion-ids
xxxxx-xxxxx-xxxxx xxxxx-xxxxx-xxxxx 2015-09-17T09:27:35+00:00 2015-09-17T09:27:37+00:00 Pending Amazon Amazon.es Standard Some product name xx-xxxx-xxxx xxxxxxx Unshipped 1 EUR 19.99 Huelva Huelva xxxxx ES
xxxxx-xxxxx-xxxxx xxxxx-xxxxx-xxxxx 2015-09-17T17:35:28+00:00 2015-09-17T17:35:29+00:00 Pending Amazon Amazon.co.uk Expedited Another Product Name xx-xxxx-xxxx xxxxxxx Unshipped 1 GBP 14.99 Eastleigh Hampshire xxxx xxx GB
Также см http://stackoverflow.com/questions/4260086/php-how-to- use-array-filter-to-filter-array-keys, чтобы не требовать жесткого кодирования номеров столбцов. – bernie
Пробовал следующий код, он возвратил много значений bool (false). http://pastie.org/private/2c6v6ky4hhctsrn8pmeg – James
Я не знаю, как выглядит ваш файл. Это либо плохо отформатировано, либо неверны параметры 'fgetcsv()'. – AbraCadaver