Каков наилучший способ хранения и поиска по объектам классов (в PHP)? - PullRequest
0 голосов
/ 16 сентября 2009

У меня около 80 экземпляров этого класса, которые называются Items, и хотели бы эффективно искать объекты по их ID или ИМЯ.

<?php
class Item
{
    public $id;
    public $name;

   //methods
}
?>

Я использую PHP5.

Ответы [ 3 ]

2 голосов
/ 16 сентября 2009

Предполагая, что нет повторяющихся имен или идентификаторов:

$ids = array();
$names = array();
foreach ($items as $item) {
  $ids[$item->id] = $item;
  $names[$item->name] = $item;
}

Если у вас есть дубликаты (имен; я думаю, что по определению нет дубликатов идентификаторов), вам нужно решить, как с этим обращаться. Вы можете хранить все дубликаты под одним ключом (поэтому значение становится массивом совпадений).

Или вы имеете в виду более сложный поиск? Если это так, простой вариант может состоять в том, чтобы разбить имя элемента на слова и / или фразы и затем соответствующим образом проиндексировать их в массив.

1 голос
/ 17 сентября 2009

Если у вас есть 80 экземпляров, на самом деле не имеет значения, какой вариант вы используете. Даже если ваш поиск N в квадрате, я не думаю, что стоит тратить время на оптимизацию производительности здесь. Сделайте самое простое, а затем профиль; если это ужасно, только тогда подумайте об увеличении сложности реализации, чтобы сделать ее быстрее.

1 голос
/ 16 сентября 2009

Я бы подумал о создании класса ItemIndex;

это позволит вам поддерживать произвольное число независимые индексы, перегружая сравнение и функции поиска в зависимости от ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...