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";
}
?>