Giả sử mảng đã cho của bạn nằm trong mảng $, bạn có thể sử dụng mảng này. Nhưng như tôi đã nói với bạn, bạn nên chọn id để xử lý các danh mục có cùng tên và sử dụng chúng làm giá trị tùy chọn trong hộp chọn của bạn:
$options = get_options($array);
echo "<select>";
foreach($options as $val) {
echo "<option>".$val."</option>";
}
echo "</select>";
function get_options($array, $parent="", $indent="") {
$return = array();
foreach($array as $key => $val) {
if($val["parent category"] == $parent) {
$return[] = $indent.$val["category name"];
$return = array_merge($return, get_options($array, $val["category name"], $indent." "));
}
}
return $return;
}
Giả sử bây giờ bạn có id trong mảng của mình là "category_id" và "parent_category_id", bạn có thể sử dụng id này. Dấu "x" trước khóa trong $ return chỉ để tránh việc php thay đổi khóa của bạn, vì chúng là số.
$options = get_options($array);
echo "<select>";
foreach($options as $key => $val) {
echo "<option value='".substr($key,1)."'>".$val."</option>";
}
echo "</select>";
function get_options($array, $parent=0, $indent="") {
$return = array();
foreach($array as $key => $val) {
if($val["parent_category_id"] == $parent) {
$return["x".$val["category_id"]] = $indent.$val["category name"];
$return = array_merge($return, get_options($array, $val["category_id"], $indent." "));
}
}
return $return;
}