Php 使用switch语句在下拉列表中追加classname

Php 使用switch语句在下拉列表中追加classname,php,Php,所以我有一个菜单,我把它转换成一个大菜单,它工作得很好,但我想清理一下代码,从专业人士那里得到一些输入 以下是PHP代码: <?php $count = count($sub_items); $parent_columns = "columns"; $child_column = "column"; switch ($count) { case 1: case 2: case 3: $parent_column

所以我有一个菜单,我把它转换成一个大菜单,它工作得很好,但我想清理一下代码,从专业人士那里得到一些输入

以下是
PHP
代码:

<?php $count = count($sub_items);
$parent_columns = "columns";
$child_column = "column";
switch ($count) {
    case 1:
    case 2:
    case 3:
        $parent_columns .= " is-justify-content-center";
        $child_column .= " is-one-quarter";
        break;
    default:
        $parent_columns .= " is-multiline";
        $child_column = ($count >= 4) ? " column is-one-quarter" : " column";
} ?>

有人知道使用我的PHP代码的更好方法吗?除了switch语句,还有其他更好的方法吗?非常感谢您的帮助。

您可以尝试此方法,而不是使用多个案例

<?php
$count = count($sub_items);
$parent_columns = "columns";
$child_column = "column";
if($count <= 3) {
    $parent_columns .= " is-justify-content-center";
    $child_column .= " is-one-quarter";
} else {
    $parent_columns .= " is-multiline";
    $child_column = ($count >= 4) ? " column is-one-quarter" : " column";
}

阅读您的代码时,有几点您可以改进

当然,这些情况可以简化为更易于维护的if语句。因为您使用的开关用于直接比较,而您的问题提示需要测试范围

除此之外,一些代码可以简化

以您的开关案例1、2、3为例,如果它们不匹配,count>=4始终为真(基于您在文章中指定的内容)

这也意味着:

$child_column = ($count >= 4) ? " column is-one-quarter" : " column";
是冗余的,可以简化为直接赋值或串联。 然后我们看到,对于count>=1,子列的类实际上是相同的,因此我们也可以简化它

<?php 

$count = count($sub_items);
$parent_columns = "columns";
$child_column = "column";

if ($count > 0) {
    $child_column .= " is-one-quarter";
    $parent_columns = $count > 3 ? "columns is-multiline" : "columns is-justify-content-center";
}

?>

或者,在PHP8.0中,您还可以使用表达式,然后以关联数组的形式返回这两个类

<?php 

$count = count($sub_items);
$parent_columns = "columns";
$child_column = "column";

if ($count > 0) {
    $child_column .= " is-one-quarter";
    $parent_columns = $count > 3 ? "columns is-multiline" : "columns is-justify-content-center";
}

?>