PHP의 구조 나 배열에 다음 정보를 저장하고 싶습니다.웹 URL 및 설명 등의 저장에 적합한 PHP 데이터 구조는 무엇입니까?
- URL
- 제목
- 설명
- 순위
내가 특정 URL에 제목, 설명 & 순위에 참조하는, 데이터가 결합되고 싶어요.
데이터를 순위별로 정렬 한 다음 각 요소가 여전히 연관되어있는 순서대로 에코하려고합니다.
연관 배열을 사용해야합니까? 구조체? 또는 다른 PHP 데이터 구조?
고마워
PHP의 구조 나 배열에 다음 정보를 저장하고 싶습니다.웹 URL 및 설명 등의 저장에 적합한 PHP 데이터 구조는 무엇입니까?
내가 특정 URL에 제목, 설명 & 순위에 참조하는, 데이터가 결합되고 싶어요.
데이터를 순위별로 정렬 한 다음 각 요소가 여전히 연관되어있는 순서대로 에코하려고합니다.
연관 배열을 사용해야합니까? 구조체? 또는 다른 PHP 데이터 구조?
고마워
$urls["http://example.com"] = array(
"rank" => 3,
"title" => "abc",
...
)
당신이 시도 할 수
나는 이것을위한 맞춤 클래스를 만들 것이다. PHP 클래스에 대한 자세한 내용은 php.net manual을 참조하십시오.
이 경우 수업을 소개하는 요령은 무엇입니까? 작업은 데이터를 저장하고 트래버스하는 것입니다. – amartynov
필자가 필요하다면 수업을 잘 사용할 수 있습니다. 내 요구 사항을 충족하면 연관 배열을 사용합니다. –
을 주문하는 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] : [];
}
}
간단한 데이터 처리 작업을 위해 OOP를 실제로 오버플로했습니다 : – amartynov
@amartynov .. 무엇이 지나치게 복잡합니까? ? URL은 2,048만큼 길어질 수 있습니다 ... 예제와 같은 키로 사용하면 이해가되지 않고 성능 문제를 확인해야합니다 ... 어쨌든 .. 아무것도 알지 못합니다. – Baba
클래스, 반복기 및 계산 MD5 (btw, 당신 해시 테이블을 다시 구현하지만 충돌을 방지하지는 않음). URL 길이와 성능 요구 사항에 대해서는 알지 못하기 때문에 간단하게 유지하는 것이 좋습니다. – amartynov
감사합니다. 데이터 구조의 어떤 유형을 사용하여 Google에 추가하고 연관 배열을 연구 할 수 있습니까? –
PHP 배열은 순서가 지정된 해시 테이블입니다. PHP 문서를 http://www.php.net/manual/en/language.types.array.php에서 확인하십시오. – amartynov
정말 고마워. 그 다음에 "순위"로 분류하고 foreach 루프를 사용하여 순서대로 반복 할 수 있습니다. PHP associative arrays에서 지금 고맙습니다! –