Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在列表和子列表中显示数组值_Php_Loops_Logic - Fatal编程技术网

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

Php 如何在列表和子列表中显示数组值,php,loops,logic,Php,Loops,Logic,嗨,我有一个数组值,如 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>

嗨,我有一个数组值,如 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
  • 0
  • 0
  • 0
  • 0
    • 一,
    • 一,
    • 二,
    • 二,
    • 二,
    • 三,
    • 三,

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

如果我没有弄错您的问题,每个“更改”都应该生成一个子列表

$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>";
$priorement=null;
回声“
    ”;//外部ul; foreach($value作为$value){ 如果($value!=0){ 如果($priorement!=$value){ 如果($priorement!=null){ 回声“
”; } 回声“
    • ”; } } 回显“
    • 美元价值”
    • ”; $priorement=$value; } //最终uls 回声“
  • ”;
    更新至问题

    产生:

    <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
    • 0
    • 0
      • 一,
      • 一,
      • 一,
      • 2
      • 2
      • 2
      • 2
            • <3
            • 4
      使用该功能

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

      使用排序选项获取唯一值

      然后使用函数

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


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

      您的源代码不进行验证,在语义上也没有多大意义。为什么在父级
      中有这么多单独的
        (没有正确关闭)?此外,我认为你的问题需要更清楚一点,否则将有可能获得接近票数的选票。你试过任何代码吗?什么不起作用?请展示你的努力,我们不是来为你工作的。看起来这应该只是一个循环,在这个循环中,您将当前值与以前的值进行比较,并在它发生变化时启动一个新的
        0
        @Barmer:好吧,只需对输入进行排序,那么0将是最上面的。(列表看起来还是按顺序排列的?!)不,
        0
        元素的嵌套方式与其他元素不同。@Barmar:这一点很好。然而,给出的示例不是有效的html,因此很难预测期望的结果。原始示例无效,现在他在嵌套的
          周围添加了
        • ,看起来很有效。这与问题完全无关。@Barmar,我认为这是正确的方法。我是说
          数组\u计数\u值
          我想这是在回答一个完全不同的问题。这个问题中没有关于计数的内容,它只是将一个数组转换成格式化的HTML。@Barmar这是一个双助手函数,他可以使用该函数按顺序获得数组的不同值,然后获得该数组中每个值的出现次数。有了这些信息,他可以很容易地重新创建
            列表。