2
카테고리 및 하위 카테고리를 만드는 데있어 능률적 인 프로젝트를 진행하고 있습니다. 내가 내 데이터베이스에서 변경 한 것은 subcategory column
이 category_key column
PHP foreach 카테고리 및 하위 카테고리
의미에 관계를 가지고 있다는 것입니다, subcategory column
에 값이없는 모든 레코드를 범주로 간주됩니다, 나머지는 하위 범주입니다. 아래 그림에서
b
는a
e, g, h
의 하위 범주가d
의 하위 범주입니다 그리고 지금은으로 모니터하기 위해이 코드를 사용하고있다 내 페이지에서 :
<?php
$query = "SELECT * FROM `categories`";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
if(empty($row['subcategory'])){
echo '
<li class="dd-item dd3-item" id="'.$row['category_key'].'" data-name="'.$row['category_name'].'" data-key="'.$row['category_key'].'">
<div class="dd-handle dd3-handle">
<i class="fa fa-bars" aria-hidden="true"></i>
</div>
<div class="dd-edit other-handle edit">
<i class="fa fa-pencil" aria-hidden="true"></i>
</div>
<div class="dd-edit other-handle delete">
<i class="fa fa-trash" aria-hidden="true"></i>
</div>
<div class="dd3-content">'.$row['category_name'].'</div>
</li>
';
}else{
echo '
<ol class="dd-list">
<li class="dd-item dd3-item" id="'.$row['category_key'].'" data-name="'.$row['category_name'].'" data-key="'.$row['category_key'].'">
<div class="dd-handle dd3-handle">
<i class="fa fa-bars" aria-hidden="true"></i>
</div>
<div class="dd-edit other-handle edit">
<i class="fa fa-pencil" aria-hidden="true"></i>
</div>
<div class="dd-edit other-handle delete">
<i class="fa fa-trash" aria-hidden="true"></i>
</div>
<div class="dd3-content">'.$row['category_name'].'</div>
</li>
</ol>
';
}
}
?>
문제는 하나이어야하며, 또한 그것의 <li>
카테고리의 상위 안에 있어야로 <ol>
요소가 반복된다.
어떤 도움 ?
function appendChildren($input)
{
$output = [];
foreach($input as $value)
{
$key = $value["category_key"];
if(empty($input["subcategory"]))
{
$output[$key] = [];
$output[$key]["value"] = $value;
$output[$key]["children"] = [];
} else {
$parent_key = $value["subcategory"];
$output[$parent_key]["children"][] = $value;
}
}
return $output;
}
는 다음과 같은 배열을해야합니다 :
사용 : 이제
, 서식을 시작합니다 카테고리와 하위 카테고리 모두 [foreach loop] (http://php.net/manual/en/control-structures.foreach.php). –
"subcategory"라는 테이블 필드는 실제로 "parent_category"와 같아야합니다. 생각하지 않습니까? – siguy85