Php 如何设置数组输出的样式?
如何设置从该数组返回的数据的样式,以将主类别与子类别分开 这是我用来从数据库中提取数据的代码:Php 如何设置数组输出的样式?,php,arrays,Php,Arrays,如何设置从该数组返回的数据的样式,以将主类别与子类别分开 这是我用来从数据库中提取数据的代码: function fetchCategoryTree($parent = 0, $spacing = '', $user_tree_array = '') { if (!is_array($user_tree_array)) $user_tree_array = array(); $sql = "SELECT * FROM `prod
function fetchCategoryTree($parent = 0, $spacing = '', $user_tree_array = '') {
if (!is_array($user_tree_array))
$user_tree_array = array();
$sql = "SELECT * FROM `products_category_translate` WHERE `parentID` = $parent AND `language` = 'bg'";
$query = mysqli_query($sql);
if (mysqli_num_rows($query) > 0) {
while ($row = mysqli_fetch_object($query)) {
$user_tree_array[] = array("id" => $row->id, "uniqueID" => $row->uniqueID, "title" => $spacing . $row->title);
$user_tree_array = fetchCategoryTree($row->uniqueID, $spacing . '-- ', $user_tree_array);
}
}
return $user_tree_array;
}
(id, uniqueID, title, language, parentID)
(1, 1, 'cat1', 'en', 0, 0),
(2, 2, 'subcat1', 'en', 0, 1),
用于输出fetchCategoryTree结果的代码:
$categoryList = fetchCategoryTree();
foreach($categoryList as $cl) {
echo '<a href="'.$g['url'].''.languageURL('0', 'products/'.$cl['uniqueID'].'/'.convertToURL($cl['title']).'.html').'">'.$cl['title'].'</a><br>';
}
我试图提取以下数据:
<li>category
<ul><li>subcategory</li></ul>
</li>
你应该改变它的方法。首先,您需要创建一个多维数组,该数组应该包含子数组中的子数组。 所以在这种情况下,您可以在循环中运行循环,以递归列表元素的形式打印它。
这将解决您的问题。当您分配给$user\u tree\u数组时,代码中存在问题或复杂问题。 下面的代码试图解决这个问题,但决不是完美的
function fetchCategoryTree($parent = 0, $spacing = '', $depth = 0) {
$user_tree_array = array();
$sql = "SELECT * FROM `products_category_translate` WHERE `parentID` = $parent AND `language` = 'bg'";
$query = mysqli_query($sql);
if (mysqli_num_rows($query) > 0) {
while ($row = mysqli_fetch_object($query)) {
$child = array("id" => $row->id, "uniqueID" => $row->uniqueID, "title" => $spacing . $row->title, "depth"=>$depth, "sub_categories" => array());
$child ["sub_categories"] = fetchCategoryTree($row->uniqueID, $spacing . '-- ', $depth+1);
$user_tree_array[] = $child;
}
}
return $user_tree_array;
}
function print_recursive($categoryList) {
if(empty($categoryList)) {
return;
}
echo "<ul>";
foreach($categoryList as $cl) {
echo "<li>";
echo '<a href="'.$g['url'].''.languageURL('0', 'products/'.$cl['uniqueID'].'/'.convertToURL($cl['title']).'.html').'">'.$cl['title'].'</a>';
print_recursive($cl["sub_categories"]];
echo "</li>";
}
echo "</ul>";
}
$categoryList = fetchCategoryTree();
print_recursive($categoryList);
@B001ᛦ 嗨,我已经更新了我的帖子。我希望现在我想要达到的目标已经很清楚了。简而言之:树形结构是解决问题的最好方法,但答案应该包含更多的解释——也许可以添加示例或至少是伪代码来解释这个问题谢谢!使用这种方法,我只能识别主要类别。如何将子类别也列为列表样式?我添加了depth参数来帮助实现这一点。让我编辑我的代码来演示如何递归处理数组。谢谢!这肯定会对我有帮助