カテゴリごとに、空のオプションとカテゴリ情報を含むオプションの2つのオプションが表示されます。
$category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>';
これはあなたのループの中にあります。したがって、ループが繰り返されるたびに、2つ オプションが作成されます。空白の1つとあなたのカテゴリの1つ。 1つが必要なだけだと思います
の先頭にある空白のオプション 。これがあなたが望んでいたことだと思います:
// notice we are initializing $category_string with an empty option here
$category_string = '<option value=""></option>';
function build_categories_options($parent, $categories, $level) {
global $category_string;
if (isset($categories[$parent]) && count($categories[$parent])) {
$level .= " - ";
foreach ($categories[$parent] as $category) {
$opt_value = substr($level.$category['catname'],3);
// removed extra empty category and put it in $category_string initialization
$category_string .= '<option value="'.$category['catid'].'">'.$opt_value.'</option>';
build_categories_options($category['catid'], $categories, $level);
}
$level = substr($level, -3);
}
return $category_string;
}
また、コメントで@MoeTsaoが言及しているように、<の使用は避けてください。 code> mysql _ *
関数は、PHPでは使用が推奨されていないためです。代わりに、 mysqli _ *
を使用してください
または