如何使用PHP和&amp ;;缩小选择下拉菜单中的文本CSS? [改写]

时间:2010-08-14 04:34:07

标签: php mysql css xhtml

我之前问了一个类似的问题,但我会以不同的方式再问一次。如何使用PHP& amp缩进选择下拉菜单缩进我所拥有的类别和无限子类别? CSS?

这是我的PHP代码。

while (list($id, $parent_id, $category) = mysqli_fetch_array($r, MYSQLI_NUM)) {

    // Add to the select menu:
    echo '<option value="' . $id . '">' . $category . '</option>\n';

}  

这是输出。

   1. Apple
   2. Arts & Entertainment
         1. Amusement
         2. Art
         3. Artists
               1. A
                     1. a1
                     2. a2
               2. B
               3. C
               4. D
   3. Automotive
   4. Network
   5. Server
   6. Web Design
         1. CSS
         2. HTML

这些数字可以让您更轻松地查看类别和子类别。

1 个答案:

答案 0 :(得分:0)

过去我通过将&nbsp;添加到每个嵌套选项的内容中来完成此操作。

$spacer = '&nbsp;&nbsp;';

while (list($id, $parent_id, $category) = mysqli_fetch_array($r, MYSQLI_NUM)) {

    $padding = str_repeat($spacer, $depth);

    // Add to the select menu:
    echo '<option value="' . $id . '">' . $padding . $category . '</option>\n';

}  

$depth表示“步骤”,选项应缩进。

我完成此操作的方法是首先将我的选项放入一个多维数组中,其中子项存储为父项的数组......

像这样:

Array( 
     1 => Array( 
          'name' => 'Apple'
          ),
     2 => 'Arts & Entertainment',
          'children' => Array(
               1 => Array(
                    'name' => 'Amusement'
                    ),
               2 => Array(
                    'name' => 'Art'
                    ),
               3 => Array(
                    'name' => 'Artists'
                    'children' => Array(
                         1 => Array(
                              'name' => 'A',
                              'children' => Array(
                                   1 => Array(
                                         'name' => 'a1'
                                    )
                              )
                         )
                    )
               )
          )
     )
 )

然后我使用递归函数遍历数组,该函数进入每个嵌套数组(如果存在)并将$padding附加到'name'值,将选项标记包装在其周围然后返回它。返回的字符串将附加到之前所有调用的返回值,并且您将看到缩进的选项菜单。魔法。