I have a file called "single.txt". The contents look like:
Array ( [0] => Ada Lovelace,F,96,ISTJ,Linux,24,99
[1] => Adele Goldberg,F,65,ENFJ,Windows,50,70
[2] => Alan Turing,M,41,ESTP,Mac OS X,31,50...
)
First, when a new person signs up, it adds them with them with their info to the end of the .txt file. I want to be able to check whether they've already signed up and I've written the following function:
function returnPerson($content){
global $person_name;
for($i=0 ; $i < count($content); $i++){
if($person_name == array_slice($content,0,0)){
$person = $content[$i];
return $person;
} else continue;
}
}
But that doesn't seem to be working.
How can I compare the first part of the string, ie the name part, to the name of the person checking?
Thanks!
Try something like this... you may have to modify it slightly depending on how your text is coming in, but should get you on the right track :)
function returnPerson($content){
global $person_name;
foreach($content as $profile) {
$profile = explode(',', $profile);
if ($person_name == $profile[0]) {
// Person Exists
return $profile;
}
}
return false; // person does not exist
}
You're "slicing" the same array while you're looping it. It looks like you just need a simple strpos()
:
if(strpos($content[$i], $person . ',') === 0){
return ...
}
Here's another way that doesn't require a for
loop:
$names = array_map('reset', array_map('str_getcsv', $content));
if(in_array($person, $names)){
...
}
It works because your data seems to use the CSV format
You can loop over the elements in the array like this:
foreach ($content as $record) {
// $record now contains string "Ada Lovelace,F,96,ISTJ,Linux,24,99"
}
You can extract fields from a comma-separated string by using the explode() function:
$string = "Ada Lovelace,F,96,ISTJ,Linux,24,99";
$fields = explode(',', $string);
// $fields[0] now contains "Ada Lovelace"
// $fields[1] now comtains "F"
// ... etc
Putting those together, you'll get something like:
foreach ($content as $record) {
$fields = explode(',', $record);
if ($fields[0] == $name_to_check) {
// found it
}
}
// didn't find it
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.