2013-07-01 3 views
1

PHP의 구조 나 배열에 다음 정보를 저장하고 싶습니다.웹 URL 및 설명 등의 저장에 적합한 PHP 데이터 구조는 무엇입니까?

  • URL
  • 제목
  • 설명
  • 순위

내가 특정 URL에 제목, 설명 & 순위에 참조하는, 데이터가 결합되고 싶어요.

데이터를 순위별로 정렬 한 다음 각 요소가 여전히 연관되어있는 순서대로 에코하려고합니다.

연관 배열을 사용해야합니까? 구조체? 또는 다른 PHP 데이터 구조?

고마워

답변

0
$urls["http://example.com"] = array(
    "rank" => 3, 
    "title" => "abc", 
    ... 
) 

당신이 시도 할 수

+0

감사합니다. 데이터 구조의 어떤 유형을 사용하여 Google에 추가하고 연관 배열을 연구 할 수 있습니까? –

+0

PHP 배열은 순서가 지정된 해시 테이블입니다. PHP 문서를 http://www.php.net/manual/en/language.types.array.php에서 확인하십시오. – amartynov

+0

정말 고마워. 그 다음에 "순위"로 분류하고 foreach 루프를 사용하여 순서대로 반복 할 수 있습니다. PHP associative arrays에서 지금 고맙습니다! –

0

나는 이것을위한 맞춤 클래스를 만들 것이다. PHP 클래스에 대한 자세한 내용은 php.net manual을 참조하십시오.

+0

이 경우 수업을 소개하는 요령은 무엇입니까? 작업은 데이터를 저장하고 트래버스하는 것입니다. – amartynov

+0

필자가 필요하다면 수업을 잘 사용할 수 있습니다. 내 요구 사항을 충족하면 연관 배열을 사용합니다. –

0

을 주문하는 uasort를 사용

$data = new LinkData(); 

$data->set("http://stackoverflow.com/q/17406624/1226894", [ 
     "name" => "Data Structure", 
     "rank" => 3 
]); 

$data->set("http://stackoverflow.com/", [ 
     "desc" => "Nice Site", 
     "title" => "Stackoverflow" 
]); 

foreach($data as $v) { 
    print_r($v); 
} 

출력

Array 
(
    [url] => http://stackoverflow.com/q/17406624/1226894 
    [title] => 
    [rank] => 3 
    [desc] => 
    [name] => Data Structure 
) 
Array 
(
    [url] => http://stackoverflow.com/ 
    [title] => Stackoverflow 
    [rank] => 
    [desc] => Nice Site 
) 

사용 클래스

class LinkData implements IteratorAggregate { 
    private $data = array(); 

    function getIterator() { 
     return new ArrayIterator($this->data); 
    } 

    function set($url, array $info) { 
     $this->data[md5($url)] = array_merge([ 
       "url" => $url, 
       "title" => null, 
       "rank" => null, 
       "desc" => null 
     ], $info); 
    } 

    function get($url) { 
     return isset($this->data[$key = md5($url)]) ? $this->data[$key] : []; 
    } 
} 
+0

간단한 데이터 처리 작업을 위해 OOP를 실제로 오버플로했습니다 : – amartynov

+0

@amartynov .. 무엇이 지나치게 복잡합니까? ? URL은 2,048만큼 길어질 수 있습니다 ... 예제와 같은 키로 사용하면 이해가되지 않고 성능 문제를 확인해야합니다 ... 어쨌든 .. 아무것도 알지 못합니다. – Baba

+0

클래스, 반복기 및 계산 MD5 (btw, 당신 해시 테이블을 다시 구현하지만 충돌을 방지하지는 않음). URL 길이와 성능 요구 사항에 대해서는 알지 못하기 때문에 간단하게 유지하는 것이 좋습니다. – amartynov