Ако приемем, че дадения ви масив е в $array, можете да използвате това. Но както вече ви казах, трябва да изберете идентификаторите, за да обработвате категории със същото име и да ги използвате като стойности на опции във вашето поле за избор:
$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;
}
Ако приемем, че сега имате идентификаторите във вашия масив като "category_id" и "parent_category_id", можете да използвате това. "x" преди ключа в $return е само за да се избегне това, че php променя вашите ключове, защото те са числови.
$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;
}