Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSV to Associative Array

I've seen numerous examples on how to take a CSV file and then create an associative array with the headers as the keys.

For example:

Brand,Model,Part,Test Honda,Civic,123,244 Honda,Civic,135,434 Toyota,Supra,511,664 

Where it would create an Array such as Array[$num][$key] where $key would be Brand, Model, Part, Test.

So If I wanted to access the test value "434" I would have to loop every index in the array and then ignore any Brands that were not honda, and any models that were not Civic


What I need to do is access the value most directly, instead of running through a for loop going through each $num index. I want to be able to access the value test "434" with:

Array['Honda']['Civic']['135']

or control a for statement with looping through every model Honda has... something like

foreach $model in Array['Honda']

At the very least I need to be able to go through every model given a known Brand and access all the relative info for each.

Edit:

Just to confirm I was setting this up an example. My actually data has headers like:

brand model part price shipping description footnote

Of which I need to access all the information tied to the part (price, shipping,desc, footnote)

like image 347
ParoX Avatar asked Jan 26 '11 06:01

ParoX


People also ask

How to convert csv to associative array in php?

There are 2 ways you can convert CSV to associative arrays in PHP. The modern approach would be to use the array_map, array_filter, & array_combine functions. The older legacy approach uses loops to loop through the content. The first method is preferred in modern applications.

What is array associative array with syntax with example?

Numeric array − An array with a numeric index. Values are stored and accessed in linear fashion. Associative array − An array with strings as index. This stores element values in association with key values rather than in a strict linear index order.


1 Answers

Too many long solutions. I've always found this to be the simplest:

<?php     /* Map Rows and Loop Through Them */     $rows   = array_map('str_getcsv', file('file.csv'));     $header = array_shift($rows);     $csv    = array();     foreach($rows as $row) {         $csv[] = array_combine($header, $row);     } ?> 
like image 111
Daerik Avatar answered Oct 03 '22 16:10

Daerik