Одним из вариантов поиска по члену класса без поиска в массиве является индексирование свойства поиска с помощью хеш-таблицы.Это перемещает нагрузку с вашего процессора на вашу память.
Вы можете изменить свой исходный класс, включив статическую карту id
и предоставив метод поиска.Поскольку id
является уникальным в этом случае, я продемонстрировал проверку проверки, которая остановит выполнение, выдав исключение, если вы попытаетесь создать два члена с одинаковым значением.
class list_member
{
public $id;
public $email;
private static $ids = array();
function __construct($id,$email)
{
$this->id = $id;
$this->email = $email;
if ( array_key_exists( $id, self::$ids ) ) {
throw new Exception('Item with id ' . $id . ' already exists.');
}
self::$ids[$id] = &$this;
}
public static function lookup_by_id($id) {
return self::$ids[$id];
}
}
new list_member(5, 'username1@email.com');
new list_member(15, 'username2@email.com');
new list_member(42, 'username3@email.com');
new list_member(45, 'username4@email.com');
$member = list_member::lookup_by_id(45);
echo $member->email; // username4@email.com