【问题标题】:how to show array values in list and sublist [closed]如何在列表和子列表中显示数组值[关闭]
【发布时间】:2013-11-28 07:56:24
【问题描述】:

您好,我有一个数组值,例如 0, 0, 0, 0, 0, 1, 1, 2, 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 必须在主列表项中,并且任何其他值必须嵌套在子列表下。

【问题讨论】:

  • 您的来源没有经过验证并且在语义上没有多大意义。为什么在父 &lt;ul&gt; 中有这么多单独的 &lt;ul&gt;s(未正确关闭)?另外,我认为您的问题需要更清楚一点,否则将面临获得接近投票的风险。您是否尝试过任何代码?什么不起作用?
  • 请展示您的尝试,我们不是来为您工作的。看起来这应该只是一个循环,您将当前值与之前的值进行比较,并在它发生变化时启动一个新的&lt;ul&gt;

标签: php loops logic


【解决方案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>

【讨论】:

  • 很好的答案,除非您没有 0 的特殊情况。
  • @Barmer:好吧,只需对输入进行排序,然后 0 将是最上面的。 (列表看起来排序了吗?!)
  • 不,0 元素的嵌套方式与其他元素不同。
  • @Barmar:好点。但是,给定的示例不是有效的 html,因此很难预测所需的结果。
  • 原始示例无效,现在看起来有效,因为他在嵌套的&lt;ul&gt;s 周围添加了&lt;li&gt;
【解决方案2】:

使用函数

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

获取不同的值计数并循环构造输出。

【讨论】:

  • 这与问题完全无关。
  • @Barmar,我认为这是正确的做法。我的意思是array_count_values
  • 我认为这是在回答一个完全不同的问题。
  • 问题中没有关于计数的内容,只是将数组转换为格式化的 HTML。
  • @Barmar 这是两个辅助函数,他可以使用它获取按顺序排序的数组的不同值,然后计算该数组中每个值的出现次数。有了这些信息,他可以轻松地重新创建
      列表。
猜你喜欢
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
相关资源
最近更新 更多