Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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 Smarty-foreach循环4次并创建一个新列表_Php_Html_Smarty - Fatal编程技术网

Php Smarty-foreach循环4次并创建一个新列表

Php Smarty-foreach循环4次并创建一个新列表,php,html,smarty,Php,Html,Smarty,我想用smarty实现这样一个列表 <ul> <li> <a>img1</a> <a>img2</a> <a>img3</a> <a>img4</a> </li> <li> <a>img5</a> <a>img6</a> <a>img7</a

我想用smarty实现这样一个列表

<ul>
 <li>
   <a>img1</a>
   <a>img2</a>
   <a>img3</a>
   <a>img4</a>
 </li>
 <li>
   <a>img5</a>
   <a>img6</a>
   <a>img7</a>
   <a>img8</a>
 </li>
<li>
   <a>img9</a>
   <a>img10</a>
   <a>img11</a>
   <a>img12</a>
 </li>
</ul>
  • {/if} {/foreach}

首先,对于给定的数组$manufacturers,它将在
  • 内循环最多4次,并将创建4个
    。然后,当它到达第四个索引时,它将生成一个新的
  • 标记


    谢谢你的帮助

    要在每个li标记中显示4个图像吗

    <ul>
    {foreach from=$manufacturers item=manufacturer name=manufacturer_list}
      {if $smarty.foreach.manufacturer_list.index % 4 == 0}
        <li>
      {/if}
    
      <a><img></a>
    
      {if $smarty.foreach.manufacturer_list.index % 4 == 0 || $smarty.foreach.manufacturer_list.last}
        </li>
      {/if}
    {/foreach}
    </ul>
    
      {foreach from=$manufacturers item=制造商名称=制造商\列表} {如果$smarty.foreach.manufacturer_list.index%4==0}
    • {/if} {如果$smarty.foreach.manufacturer_list.index%4==0 | |$smarty.foreach.manufacturer_list.last}
    • {/if} {/foreach}

    Im Smarty3语法您可以执行以下操作:

    {$data = [
        "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", 
        "hotel", "india", "juliet", "kilo", "lima", "mike", "november", 
        "oscar", "papa", "quebec", "romeo", "sierra", "tango", "uniform", 
        "victor", "whiskey", "x-ray", "yankee", "zulu"
    ]}
    
    {foreach $data as $value}
      {if $value@first}
        <ul>
          <li>
      {elseif ($value@iteration - 1) is div by 4}
          </li><li>
      {/if}
    
      <span>{$value}</span>
    
      {if $value@last}
          </li>
        </ul>
      {/if}
    {/foreach}
    
    {$data=[
    “阿尔法”,“布拉沃”,“查理”,“三角洲”,“回声”,“狐步”,“高尔夫”,
    “酒店”、“印度”、“朱丽叶”、“基洛”、“利马”、“迈克”、“十一月”,
    “奥斯卡”,“爸爸”,“魁北克”,“罗密欧”,“塞拉”,“探戈”,“制服”,
    “维克多”,“威士忌”,“x光”,“扬基”,“祖鲁”
    ]}
    {foreach$data as$value}
    {如果$value@first}
    
    • {elseif($value@iteration-1)被4}除掉
    • {/if} {$value} {如果$value@last}
    {/if} {/foreach}

    请注意,由于将整个
    嵌套在foreach循环中,因此它不会显示是否没有要循环的数据。

    迭代-1
    为什么不直接使用索引?因为您可能正在迭代一个映射(关联数组/字符串键),而该映射不适用于索引。
    {$data = [
        "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", 
        "hotel", "india", "juliet", "kilo", "lima", "mike", "november", 
        "oscar", "papa", "quebec", "romeo", "sierra", "tango", "uniform", 
        "victor", "whiskey", "x-ray", "yankee", "zulu"
    ]}
    
    {foreach $data as $value}
      {if $value@first}
        <ul>
          <li>
      {elseif ($value@iteration - 1) is div by 4}
          </li><li>
      {/if}
    
      <span>{$value}</span>
    
      {if $value@last}
          </li>
        </ul>
      {/if}
    {/foreach}