EDIT:
I was on mobile so i wrote as little as possible.
With arrays you are stuck with integer indexing, but there are other types of lists & Dictionaries that make it possible to index stuff with other datatypes, like stings or even GameObjects etc.
Here’s an example using a Dictionary.
using System.Collections.Generic;
...
Dictionary<string, bool> unlocked = new Dictionary<string, bool>();
unlocked.Add("something", false);
...
//this will throw an error if u didn't add anything with key "something"
bool isUnlocked = unlocked["something"];
//this is safer. Enters the if only if key "something" exists.
// and changes the value of isUnlocked to the found value
bool isUnlocked = false;
if (unlocked.TryGet("something", out isUnlocked))
{
if (isUnlocked)//do something...