thinkphp中 volist循环的 mod取值的问题

<ul>
<volist name="data" id="arr" key="k" mod="2">
<eq name="mod" value="0">
<li>{$k}...{$arr.id}---{$arr.user}---{$arr.email}</li>
</eq>
</volist>
</ul>

取出的值是:

  • 1...1---路飞---lufei@qq.com
  • 3...3---蜡笔乖欣---222@qq.com
  • 5...53---heh21033---fff@qq.com
  • 7...65---小心---xiaoxin@qq.com
  • 9...74---aa73f80eb8608a88a135---
  • 11...76---_呵呵3994---heh@qq.com
  • 13...78---5e36941b3d856737e815---xixi@qq.com

为什么取出的值是这样呢? 按自己的理解 应该是 $mod = $k%2; 然后 为0的输出来,怎么$k是基数呢,不应该是偶数吗?

随后查看缓存中的源码:

<ul>
<?php if (is_array($data)): $k = 0;
$__LIST__ = $data;
if (count($__LIST__) == 0) : echo "";
else: foreach ($__LIST__ as $key => $arr): $mod = ($k % 2);
++$k;
if (($mod) == "0"): ?>
<li><?php echo($k); ?>...<?php echo($arr["id"]); ?>---<?php echo($arr["user"]); ?>
---<?php echo($arr["email"]); ?></li><?php endif; endforeach; endif;
else: echo "";endif; ?>
</ul>

知道了,$k是从0开始的,而外面的$k却是1开始的

我们这样,自己定义一个$i:

<ul>
<!--取mod问题-->
<php>$i=0;</php>
<volist name="data" id="arr" key="k" mod="5">
<eq name="mod" value="0">
<li><php>echo $i;</php>...{$arr.id}---{$arr.user}---{$arr.email}</li>
</eq>
<php>$i++;</php>
</volist>
</ul>

值:

  • 0...1---路飞---lufei@qq.com
  • 2...3---蜡笔乖欣---222@qq.com
  • 4...53---heh21033---fff@qq.com
  • 6...65---小心---xiaoxin@qq.com
  • 8...74---aa73f80eb8608a88a135---
  • 10...76---_呵呵3994---heh@qq.com
  • 12...78---5e36941b3d856737e815---xixi@qq.com

答案显然就出来了,是thinkphp中 把mod 的$k值改变了。。。。。

上一篇:【NOIP2017】逛公园(最短路图,拓扑排序,计数DP)


下一篇:洛谷 P3953 [ NOIP 2017 ] 逛公园 —— 最短路DP