如何在列表和子列表中显示数组值

时间:2013-11-28 07:56:25

标签: php loops logic

嗨我有一个数组值 0,0,0,0,0,1,1,2,2,3,3

我们如何以最有效的格式打印出来?

<ul>
  <li>0</li>
  <li>0</li>
  <li>0</li>
  <li>0</li>
  <li>0</li>

  <li>
    <ul>
     <li>1</li>
     <li>1</li>
    </ul>
  </li>

  <li>
   <ul>
    <li>2</li>
    <li>2</li>
    <li>2</li>
   </ul>
  </li>

 <li>
  <ul>
   <li>3</li>
   <li>3</li>
  </ul>
 </li>
</ul>

条件是0必须在主列表项中,并且任何其他值必须嵌套在子列表下。

2 个答案:

答案 0 :(得分:1)

如果我的问题是正确的,那么每个“更改”应该会产生一个子列表吗?

$priorElement = null;
echo "<ul>"; // outer ul;
foreach ($values AS $value){
    if ($value != 0){
      if ($priorElement != $value){
        if ($priorElement != null){ 
         echo "</ul></li>";
        }
        echo "<li><ul>";
      }
    }

    echo "<li>$value</li>";

    $priorElement = $value;
}
//final uls
echo "</ul></li></ul>";

已更新至问题。

产地:

<ul>
  <li>0</li>
  <li>0</li>
  <li>0</li>
  <li><ul>
    <li>1</li>
    <li>1</li>
    <li>1</li>
    </ul>
  </li>
  <li><ul>
    <li>2</li><li>2</li><li>2</li><li>2</li><li>2</li></ul></li><li><ul><li>3</li></ul></li><li><ul><li>4</li></ul></li></ul>

答案 1 :(得分:0)

使用功能

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

http://us3.php.net/function.array-unique

使用排序选项获取唯一值。

然后使用功能

array array_count_values ( array $array )

http://www.php.net/manual/en/function.array-count-values.php

获取不同的值count并在循环中构造输出。