обработка файлов — поиск одинаковых значений в массиве php

У меня есть массив, связанный с текстовым файлом, в котором мне нужна информация об имени ученика и номере ученика, введенном пользователем.

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];
}
}

Я не могу понять, как искать учеников с одинаковыми именами, но с разными номерами учеников. И файл написан так

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

Например, если я пытаюсь найти John Saunders с номером студента DU-255-9787 это не работает, но John Saunders SH-433-3012 делает, потому что он появляется первым в файле.

0

Решение

Почему бы не использовать разрыв в условии if? Когда условие удовлетворяет?

 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;
}}

Надеюсь это поможет.

Мир! XD

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]