반응형
기사와 섹션이있는 웹 사이트가 있습니다. each sections can have a parent section, as much as they like 예를 들면 :
subject 1
-subject 2
--subject 3
-subject 4
--subject 5
--subject 6
---subject 7
subject 8
subject 9
기타..
이제 재귀 적으로 가져오고 싶습니다 .php와 mysql을 통해 수행하는 가장 효율적인 방법은 무엇입니까?
고급 Tnx.
해결 방법
트리가 너무 크지 않은 경우 몇 가지 영리한 참조를 사용하여 PHP에서 트리를 간단히 만들 수 있습니다.
$nodeList = array();
$tree = array();
$query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
while($row = mysql_fetch_assoc($query)){
$nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
}
mysql_free_result($query);
foreach ($nodeList as $nodeId => &$node) {
if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
$tree[] = &$node;
} else {
$nodeList[$node['parent']]['children'][] = &$node;
}
}
unset($node);
unset($nodeList);
그러면 각 children
-슬롯의 하위 항목이있는 $ tree
의 트리 구조가 제공됩니다.
우리는 상당히 큰 트리 (>> 1000 개 항목)로이 작업을 수행했으며 MySQL에서 재귀 쿼리를 수행하는 것보다 매우 안정적이며 훨씬 빠릅니다.
참조 페이지 https://stackoverflow.com/questions/3116330
반응형
'MySql' 카테고리의 다른 글
MySQL 날짜 별 항목 선택-> = NOW (), MySQL (0) | 2020.11.19 |
---|---|
MySQL yii2에서 like 연산자로 데이터 선택 (0) | 2020.11.19 |
MySQL 테이블에서 최신 ID 번호를 얻는 방법은 무엇입니까? (0) | 2020.11.19 |
MySQL Laravel 5.1 Migration and Seeding Cannot truncate a table referenced in a foreign key constraint (0) | 2020.11.19 |
MySQL ERROR pool.ConnectionPool-풀의 초기 연결을 만들 수 없습니다. (0) | 2020.11.19 |
댓글