2009-09-16 6 views
0

이 클래스의 약 80 개의 인스턴스를 Items라고하고 ID 또는 NAME으로 개체를 효율적으로 검색하려고합니다.클래스 객체를 통해 PHP를 저장하고 검색하는 가장 좋은 방법은 무엇입니까?

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

    //methods 
} 
?> 

저는 PHP5를 사용하고 있습니다.

+0

저는 간단한 foreach 루프가 당신이 신경 써야 할만큼 효율적이라고 생각합니다. 다른 것은 아마도 불필요한 오버 헤드를 유발하거나 시간을 할애하지 못할 것입니다. 나는 당신이 해결하려고하는 문제의 맥락에서 이것을 요구하고 있다고 가정하고 있습니다. 당신이 일하는 수업이 매우 큽니까? – Anthony

+0

예, foreach 루프가 정상적으로 작동합니다. Item 클래스는 약 70 줄의 코드로 비교적 작습니다. –

답변

2

중복 된 이름이나 ID를 가정하지 :

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

당신이 중복 된 경우 (이름을, 나는 중복 ID를 정의가없는 상상) 다음 그 처리 방법을 해결해야합니다. 하나의 키 아래에 모든 복제본을 저장할 수 있습니다 (따라서 값은 일치하는 배열이됩니다).

아니면 더 정교한 검색을 의미합니까? 그렇다면 간단한 변형은 항목 이름을 단어 및/또는 문구로 분리 한 다음 적절하게 배열에 색인화하는 것입니다.

+0

은 $ items 객체에 대한 참조를 포함하는 배열입니까? 간단한 검색을 원했고 제공 한 코드가 도움이되었습니다. 감사 –

1

나는 ItemIndex 클래스를 만드는 것에 대해 생각할 것입니다.

이렇게하면 개의 독립적 인 인덱스를 임의로 유지할 수 있으므로 비교 기능과 검색 기능이 적절하게 오버로드됩니다.

1

인스턴스가 80 개인 경우 사용하는 옵션이 실제로 중요하지 않습니다. 검색이 N 제곱 인 경우에도 성능 최적화에 시간을 투자 할 가치가 있다고 생각하지 않습니다. 가장 간단한 일을 한 다음 프로파일을하십시오. 끔찍한 경우 구현의 복잡성을 높이는 것이 더 빠른 방법입니다.

관련 문제