How to check a string from a existing string array.

I'm trying to check the presence a string value from a array and take some actions if it is there. This is for a RFID system. Below is the code that I used and it gives me the output as "found" all the time. Can you help me in this.

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);  // Create MFRC522 instance.

int readsuccess;
byte readcard[4];
char str[32] = "";
String StrUID;
bool result= false;



String tagid[] = {"37376B34","7AA29B1A","4BA65F2A" };

void setup() {
  Serial.begin(9600); // Initialize serial communications with the PC
  SPI.begin();      // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522 card
}
// --------------------------------------------------------------------
void loop() {
  readsuccess = getid();
 
  if(readsuccess){
    Serial.println(StrUID);
    delay(1000);
  }
  result= check();

  if (result =true){
    Serial.println("found");
  }
  
}
// --------------------------------------------------------------------
int getid(){  
  if(!mfrc522.PICC_IsNewCardPresent()){
    return 0;
  }
  if(!mfrc522.PICC_ReadCardSerial()){
    return 0;
  }
  for(int i=0;i<4;i++){
    readcard[i]=mfrc522.uid.uidByte[i]; //storing the UID of the tag in readcard
    array_to_string(readcard, 4, str);
    StrUID = str;
  }
  mfrc522.PICC_HaltA();
  return 1;
}
// --------------------------------------------------------------------
void array_to_string(byte array[], unsigned int len, char buffer[])
{
    for (unsigned int i = 0; i < len; i++)
    {
        byte nib1 = (array[i] >> 4) & 0x0F;
        byte nib2 = (array[i] >> 0) & 0x0F;
        buffer[i*2+0] = nib1  < 0xA ? '0' + nib1  : 'A' + nib1  - 0xA;
        buffer[i*2+1] = nib2  < 0xA ? '0' + nib2  : 'A' + nib2  - 0xA;
    }
    buffer[len*2] = '\0';
}

bool check(){
  for(int i=0;i<3;i++){
    String tagno=tagid[i];
    if (tagno == StrUID){
      return true;

    }
  }
   
  }

== for comparison = for assignment

When comparisons do not work it is usually a good idea to print the values being compared beforehand to make sure that they look reasonable

You put the bytes read from the RFID in an array of 4 bytes then convert it to a String for comparison with the Strings in the tagid array. Why do the conversion when you could check the value read with an array of integers ?