如何回显.txt的位置?

I'm doing a code based on two .txt, one with names and the other with birthdays. I'm reading them and when the day date coincides with the date.txt, the name in the coincident line of the names.txt will be shown, but when I do the comparison, only the last line of the names.txt appears.

That's the code:

<?php

    $nome   =   fopen("nome.txt", "r");
    while(!feof($nome)){
        $pessoa =   fgets($nome);
    }   fclose($nome);

    $current    =   date("d-m");
    $content    =   fopen("data.txt", "r");

    while (!feof($content)){
        $linha  = fgets($content);
        if (strtotime($linha)   ==  strtotime($current))   {
            echo $pessoa;
            echo '<br>';
        }
    }   fclose($content);

    ?>

Content of the .txt:


nome.txt:

teste

teste1

teste2

teste3


data.txt:

12-12

18-12

12-12

12-12

You can process line by line from both files at the same time

<?php

    $nome    =   fopen("nome.txt", "r");
    $content =   fopen("data.txt", "r");
    $current =   date("d-m");

    while(!feof($nome) && !feof($content)){
        $pessoa =   fgets($nome);
        $linha  = fgets($content);

        if (trim($current) == trim($linha))   {
            echo $pessoa;
            echo '<br>';
        }
    }   

    fclose($content);
    fclose($nome);

?>

Or you can read entire file into an array using file function but this may be slower

<?php

    $nome    =   file("nome.txt");
    $content =   file("data.txt");
    $current =   date("d-m");

    foreach($content as $key => $linha)

        if (trim($current) == trim($linha))   {
            echo $nome[$key];
            echo '<br>';
        }

?>

You can open the files and load them in to arrays and use foreach with $key to output them in sync.

$names = explode(PHP_EOL,file_get_contents("none.txt"));

$dates = explode(PHP_EOL,file_get_contents("data.txt"));

Foreach($names as $key => $name){

     Echo $name . " " . $dates[$key] . "
";
}

https://3v4l.org/59ao6

Another way is to combine the two arrays in to one.
This however has a flaw, you can not have two people with the same name.

$days = array_combine($names, $dates);
// Days is now an associate array with name as key and date as birthday.
Foreach($days as $name => $date){

     Echo $name . " " . $date . "
";
}