user3316257
user3316257

Reputation: 23

Search for same value's in php array

I have an array that is linked to a text file where I need the information of a students name and student number that has been entered by user input.

if (isset ($_POST['stnum']) && isset ($_POST['stname'])) 
    {
        $studentNum = htmlentities ($_POST['stnum']);
        $studentName = htmlentities ($_POST['stname']);
        $DB = fopen ($students, 'r') or die ("$students cannot be opened for reading.");

        while ($record = fgets ($DB) and ! $foundNum and ! $foundName) 
        {
            $studentField = explode ("$$", htmlentities (trim ($record)));

            $foundNum = $studentNum === $studentField[0];
            $foundName = $studentName === $studentField[1];  
        }

        fclose ($DB);

        if ($foundNum && $foundName) 
        {
            echo $studentField[0], $studentField[1];
        }
    }

I cannot figure out how to search for the students that have the same name but different student number. And the file is written like this

DA-708-3304$$Elizabeth Organ
GB-217-1214$$John Alexander
SE-412-2175$$Odell Thomas
SH-433-3012$$John Saunders
HU-737-1176$$Frederica Elias
DU-941-4244$$Nancy Sauceda
CC-671-5984$$Margaret Coppa
DA-220-7070$$Walter Snyder
HU-658-4475$$Elizabeth Organ
DU-255-9787$$John Saunders
CC-777-8752$$Hubert Green

For example If I try searching for John Saunders with a student number DU-255-9787 it doesn't work but John Saunders SH-433-3012 does because it appears first in the file.

Upvotes: 0

Views: 68

Answers (1)

Indrasis Datta
Indrasis Datta

Reputation: 8606

Why not use break within the if condition? When the condition satisfies?

 while ($record = fgets ($DB) and ! $foundNum and ! $foundName) {
     $studentField = explode ("$$", htmlentities (trim ($record)));

     if (($studentName === $studentField[1]) &&  empty($studentNum))) {

          /* When only name is entered by user. So, the user whose number appears first in the list should be printed. */ 

         echo $studentField[1].", ".$studentField[0];
         break;

     } else if (($studentNum === $studentField[0]) &&  ($studentName === $studentField[1])) { 

        /* When both name and number is entered by user */

         echo $studentField[1].", ".$studentField[0];
         break;
      }


  }

Hope this helps.

Peace! xD

Upvotes: 2

Related Questions