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 )

Open in new window

LVL 2
vertex_paulAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
phpmonkeyConnect With a Mentor Commented:
dammid,

$firstline = true;

Sorry, its with beeing fast...
0
 
phpmonkeyCommented:
If you parse your array like this, you can access your recorords like this:
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_NUMBER']
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
$firstline = true;
$arrData = array();
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
 
   if($firstline){
 
     $keys = $data;
     $firstline= false;
     continue;
 
  }// end if
 
  $arrData =  array_combine($keys,$data);
 
 
}// end while
 
echo "<pre>";
var_dump($arrData[0]['TELEPHONE_NUMBER']); // string ("999-999-9999")
echo "</pre>";

Open in new window

0
 
phpmonkeyCommented:
oops one little error i see...

change
$arrData =  array_combine($keys,$data);

into
$arrData[] =  array_combine($keys,$data);

sorry
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
vertex_paulAuthor Commented:
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?
0
 
phpmonkeyCommented:
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.
echo "<pre>";
foreach($arrData as $data){
 
    var_dump($data);
 
}// end foreach
echo "</pre>";

Open in new window

0
 
vertex_paulAuthor Commented:
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);

Open in new window

0
 
phpmonkeyCommented:
More info on foreach and looping arrays/data:
http://php.net/foreach
0
 
phpmonkeyCommented:
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.
$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

Open in new window

0
 
phpmonkeyCommented:
Ignore my last comment, it was some copy paste mess-up from the textbox.
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>";

Open in new window

0
 
vertex_paulAuthor Commented:
Error:

Warning: array_combine() expects parameter 1 to be array, null given
0
 
phpmonkeyCommented:
put

$firstline = false;

on top of the script.
$firstline = false;
$file = fopen($target_path,"r");
while(! feof($file))
//...

Open in new window

0
 
vertex_paulAuthor Commented:
Still same error.. pardon my ignorance but if the firstline if is not met then would $keys value not have to be set somewhere?
0
 
vertex_paulAuthor Commented:
That worked!!! .. Thank you very much.. shouldnt have been that hard but I was stuck
0
 
vertex_paulAuthor Commented:
That worked!!! .. Thank you very much.. shouldnt have been that hard but I was stuck
0
All Courses

From novice to tech pro — start learning today.