Solved

Get the value of only the first entry in $data[1] of a CSV file

Posted on 2014-03-29
12
335 Views
Last Modified: 2014-03-30
Hi Guys,
How can I get the value of just the very first entry in $data[1] of a CSV file that has many values?
I don't want to get the value of the other entries in $data[1].
I just want to isolate the first value.
The attempts in the code below are logical to me, but do not function as desired.
Thanks,
Sas
	while (($data = fgetcsv($handle, 1000, ",")) !== FALSE  ) {
	if ($data[1]=='ExactlyThis'){$doSomething='Do This';}else{$doSomething='Do Nothing';}
	if (strpos($data[1], 'ExactlyThis')){$doSomething='Do This';}else{$doSomething='Do Nothing';}

Open in new window

0
Comment
Question by:sasnaktiv
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 6
12 Comments
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 39963956
PHP fgetcsv() returns an array.  Arrays are numbered from zero, not from 1.  So if you want the first value you might want to look at $data[0].

You can print out the contents of a PHP array with var_dump()
0
 
LVL 1

Author Comment

by:sasnaktiv
ID: 39963972
Hi Ray,
Yes I know fgetcsv() returns an array. But I'm looking to get the value of a particular entry (the first one) in a particular column. Whether it be $data[0] or $data[1] or $data[2] does not matter at this point.

For example, let's say $data[0] contains: Ray , Sas , Jack , Jill , etc.
I want to know if the first entry is "Ray" or not. I don't care about the subsequent values in the array.

I hope I'm being clear,
Sas
0
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 39964111
Not sure I follow.  Are you saying that the first row of the CSV file contains this:
Ray,Sas,Jack,Jill

Open in new window

And you want to read only the first row of the CSV file, then isolate Ray?
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:sasnaktiv
ID: 39964153
No. I only want "Ray" from $data[0] . Not "Sas, Jack, Jill"
So yes, I want to isolate "Ray".
Because once I have "Ray" I'll know how to use "Sas, Jack, Jill"
0
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 39964332
OK, the descriptions are still not making any sense.  Let's try it this way.

1. Make a small CSV file that is representative of your data.  A few lines is enough.
2. Make a small results set that shows exactly what you want to get from the CSV file.
3. Post both of those things here.  This is called the SSCCE and once it's here and clear, it should be easy to help you.
0
 
LVL 1

Author Comment

by:sasnaktiv
ID: 39964359
Thanks Ray,
I'll try to explain this more clearly tomorrow.
It's a bit more complex than just creating the files you're requesting.
Good night!
Sas
0
 
LVL 1

Author Comment

by:sasnaktiv
ID: 39964519
Hi Ray,
To prepare my files as SSCCE will only make this more complex than it needs to be. After all, it's simply a matter of logic. But importantly, being able to communicate that logic clearly without ambiguity (which it seems I'm not being very successful with at this point).

So hang in there with me.
This next explanation is the best way I could think of to spell out exactly what it is that I'm trying to accomplish. And that is to INSERT into my MySQL DB the values that are presented to me in differently configured CSV source files.

Therefore by being able to determine the value of the first entry in $data[0] of each CSV source file, I will learn the column configuration of the CSV files which will populate my MySQL DB.

With that knowledge, I can alter the MySQL INSERT to accommodate those differences between the CSV file structures so that the values are entered into my MySQL DB in the proper columns.

I've made 2 extremely simple CSV files (CSV_Example1.csv and CSV_Example2.csv) to demonstrate the kind of files I expect to be working with, and notes to outline my goals.
....................................................................................................
Begin "CSV_Example1.csv"
"E-mail Address","First Name","Middle Name","Last Name"
"sas@sas.com","Sas","Naktiv"
"ray@experts.com","Ray","Savant","Passeur"
End "CSV_Example1.csv"
....................................................................................................
Begin "CSV_Example2.csv"
Name,Given_Name,Middle_Name,Family_Name,eMail
Sas Naktiv,Sas,,Naktiv,sas@sas.com
Ray Savant Paseur,Ray,Savant,Paseur,ray@experts.com
End "CSV_Example2.csv"
....................................................................................................

Notice that in CSV_Example1.csv the first value of $data[0] is "E-mail Address".
And in CSV_Example2.csv the first value of $data[0] is "Name".
The difference in the $date[0] values between the two CSV files tells me that the CSV source files have different column structures from each other.
Accordingly, by knowing what the value of the first entry in $data[0] is in each CSV source file (I do not need to know the subsequent values ie.:sas@sas.com & ray@experts.com in Example1 -- nor -- Sas Naktiv & Ray Savant Paseur in Example2), I can configure the columns in the proper order to "INSERT" those fields into my MySQL DB which has yet a different column structure altogether.
As in:
if (the first value of $data[0]=='E-mail Address') {$InsertValuesIntoDB='InThisOrder';}
else if (the first value of $data[0]=='Name') {$InsertValuesIntoDB='InSomeOtherOrder';}

....................................................................................................

Ray, I hope I've been able to make my logic clear enough. Either that or I should move to Colorado where the air is clear and the smoke is dear.
Thanks in advance,
Sas
0
 
LVL 110

Accepted Solution

by:
Ray Paseur earned 500 total points
ID: 39964783
Easy once we can see the data!

Please see these links:
http://iconoun.com/demo/temp_sasnaktiv.php?q=1
http://iconoun.com/demo/temp_sasnaktiv.php?q=2

Here is the test data:
http://iconoun.com/demo/temp_sas1.csv
http://iconoun.com/demo/temp_sas2.csv

Here is the program code:
<?php // demo/temp_sasnaktiv.php
error_reporting(E_ALL);

// CHOOSE FILE ONE OR TWO
$n = !empty($_GET['q']) ? $_GET['q'] : '0';
$f = 'temp_sas' . $n . '.csv';

// GET THE FIRST RECORD AND EXTRACT THE SIGNAL STRING
$fpr = fopen($f, 'r');
$csv = fgetcsv($fpr);
$sig = $csv[0];


// SHOW THE FIRST POSITION
var_dump($sig);

Open in new window

0
 
LVL 1

Author Comment

by:sasnaktiv
ID: 39964872
Thanks Ray,
That seems to be working for me, but ...

The var_dump is giving me string(14) "E-mail Address"
I only want  E-mail Address

So, how can I avoid or delete the unwanted info  string(14) ...
as well as the quotes around " E-mail Address "  ?

Sas
0
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 39965047
The value you want is stored in the variable named $sig.  We use var_dump($sig) to prove that we got the expected value in the expected variable.

Whenever you're not sure what a PHP function is doing, or you're unsure of how to change the function call, you can look it up on PHP.net.

You can change var_dump(), which is used for diagnostic information and program debugging, into print() or echo.
0
 
LVL 1

Author Closing Comment

by:sasnaktiv
ID: 39965072
Thanks Ray.
As usual your help is much appreciated.
Sas
0
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 39965078
Glad to help -- thanks for using EE, ~Ray

ps: The Colorado idea sounds pretty good, too!
0

Featured Post

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.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
MySQL limit and not so limited 13 36
MySQL Persistent Connections 10 32
Session time out quickly. 6 25
PHP $_POST vs asp request 4 23
Developers of all skill levels should learn to use current best practices when developing websites. However many developers, new and old, fall into the trap of using deprecated features because this is what so many tutorials and books tell them to u…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to count occurrences of each item in an array.

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question