vertex_paul
asked on
PHP Parse CSC
I am trying to upload a .csv file and then parse it out.. I have the file uploading with no problem and can read the file using fgetcsv just fine.. However, I am stuck on how to parse the arrays. I have tried multiple options but I guess just do not understand what I am trying to do.. I have posted some of the array below but I would like to do is get each set of data separated so I can loop through them individually.. any help is greatly appreciated.
Array ( [0] => TELEPHONE_NUMBER [1] => BTN [2] => OCN [3] => DCR [4] => PDCR [5] => COMPLETION_DATE [6] => LN [7] => ORDER_NUMBER [8] => APPLICATION_DATE [9] => PON [10] => CIRCUIT_ID [11] => CLASS_SERVICE ) Array ( [0] => 999-999-9999 [1] => 0 [2] => 1111 [3] => AS [4] => [5] => Apr 9, 2009 [6] => (NON-PUB) SMITH, JOHN [7] => D1DJD7J6 [8] => Apr 6, 2009 [9] => [10] => [11] => 1F1CL ) Array ( [0] => 999-999-9999 [1] => 0 [2] => 1111 [3] => AS [4] => [5] => Apr 9, 2009 [6] => DOE, JOHN [7] => D1FC3291 [8] => Apr 9, 2009 [9] => 2.09E+13 [10] => [11] => 1F3CL ) Array ( [0] => 9999-999-9999 [1] => 0 [2] => 1111 [3] => AS [4] => [5] => Apr 9, 2009 [6] => JONES, JOE [7] => D60W11Y2 [8] => Apr 8, 2009 [9] => 0408JOO [10] => [11] => 1FR )
oops one little error i see...
change
$arrData = array_combine($keys,$data) ;
into
$arrData[] = array_combine($keys,$data) ;
sorry
change
$arrData = array_combine($keys,$data)
into
$arrData[] = array_combine($keys,$data)
sorry
ASKER
Thanks for the quick response.. I understand what you are saying.. how now would I look through each array and pull out that ones information and go to the next one?
You can do it with a foreach loop like this.
While foreaching you can offcourse do all kinds of logic with it or echo a table in between.
While foreaching you can offcourse do all kinds of logic with it or echo a table in between.
echo "<pre>";
foreach($arrData as $data){
var_dump($data);
}// end foreach
echo "</pre>";
ASKER
ok.. maybe I am not following you as well I as I thought.. below is my code
$file = fopen($target_path,"r");
while(! feof($file))
{
//print_r(fgetcsv($file));
$data [] = fgetcsv($file);
}
$firstline = true;
$arrData = array();
while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
if($firstline){
$keys = $data;
$firstline= false;
continue;
}// end if
$arrData = array_combine($keys,$data);
echo "<pre>";
foreach($arrData as $data1){
var_dump($data1);
}// end foreach
echo "</pre>";
}// end while
fclose($file);
More info on foreach and looping arrays/data:
http://php.net/foreach
http://php.net/foreach
Hehe noooo ;)
put the foreach outside the while.
In the while loop we build up the array, then afterwards you can parse it easely in a foreach.
put the foreach outside the while.
In the while loop we build up the array, then afterwards you can parse it easely in a foreach.
$file = fopen($target_path,"r");
while(! feof($file))
{
//print_r(fgetcsv($file));
$data = fgetcsv($file);
if($firstline){
$keys = $data;
$firstline= false;
continue;
}// end if
$arrData[] = array_combine($keys,$data);
}// end while
fclose($file);
echo "<pre>";
foreach($arrData as $data1){
var_dump($data1);
}// end foreach
echo "</pre>";
}// end while
Ignore my last comment, it was some copy paste mess-up from the textbox.
This should be better:
This should be better:
$file = fopen($target_path,"r");
while(! feof($file))
{
$data = fgetcsv($file);
if($firstline){
$keys = $data;
$firstline= false;
continue;
}// end if
$arrData[] = array_combine($keys,$data);
}// end while
fclose($file);
echo "<pre>";
foreach($arrData as $data1){
var_dump($data1);
}// end foreach
echo "</pre>";
ASKER
Error:
Warning: array_combine() expects parameter 1 to be array, null given
Warning: array_combine() expects parameter 1 to be array, null given
put
$firstline = false;
on top of the script.
$firstline = false;
on top of the script.
$firstline = false;
$file = fopen($target_path,"r");
while(! feof($file))
//...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Still same error.. pardon my ignorance but if the firstline if is not met then would $keys value not have to be set somewhere?
ASKER
That worked!!! .. Thank you very much.. shouldnt have been that hard but I was stuck
ASKER
That worked!!! .. Thank you very much.. shouldnt have been that hard but I was stuck
var_dump($arrData[0]);
for the first record for example.
the first array is numeric so you have to access it like $arrData[0]
the array in it now is associative, so you can use the keys. $arrData[0]['TELEPHONE_NUM
there are a bunch of array functions explained on the php site, take a look at this: http://be.php.net/manual/en/function.array.php
Open in new window