連想配列とforeach:連想配列の共通値を使って、異なる連想配列を結合させる。

 // ユーザー数
    $n = trim(fgets(STDIN));
    
    $userToBlood = [];
    for($i = 0; $i < $n; $i++) {
        $a = trim(fgets(STDIN));
        [$user, $blood] = explode(" ", $a);
        $userToBlood[$user] = $blood;
    }
    
    // 答えの数
    $m = trim(fgets(STDIN));

    $bloodToAns = [];
    // タイプ
    for($i = 0; $i < $m; $i++) {
        $a = trim(fgets(STDIN));
        [$blood, $ans] = explode(" ", $a);
        $bloodToAns[$blood] = $ans;
    }
    
// $userToBloodの連想配列の「値」と $bloodToAns の「キー」は、同じ種類。
// 出力すべきお題の キー を、ループしながら、その キー に該当する 別のお題の 値 を出力させる。というコード。
    foreach($userToBlood as $user => $blood) {
        echo $user. ' '. $bloodToAns[$blood]. "\n";
    }