【问题标题】:Different css styling for last element of a php arrayphp数组的最后一个元素的不同css样式
【发布时间】:2013-08-29 00:03:37
【问题描述】:

循环遍历数组时,如何为要在数组中输出的最后一个元素创建不同的 css div 样式。

for($i=0;$i<=count($productid);$i++){if($productrank[$i]>0 ){

<? if (($productid[$i] % 2 ) && !( last element of array){ echo '<div class="centerBoxContentsFeatured centeredContent back  vLine " style="width:50%;">';}
else { echo '<div class="centerBoxContentsFeatured centeredContent back " style="width:50%;">';} ?>

【问题讨论】:

  • 仅供参考,您永远不应该使用&lt;?,而始终使用&lt;?php(除非您使用始终支持的&lt;?= some_expression ?&gt; 语法)
  • 你得到最后一个元素为$productid[count($productid)-1]。不过,您的 if 构造正在做一些不同的事情。
  • 如果您的最后一个 div 是其父级的最后一个子级,您可以简单地在 CSS 文件中使用 :last-child 选择器。

标签: php css loops for-loop


【解决方案1】:

只需检查它是否是最后一个 $productid

for(...)
{
    if ($i === (count ($productid) - 1))
        // Last one -> special CSS
    }
}

另外,如果你没有必要,不要在 FOR 循环中使用count()。 只需在之前分配一个值并使用它:

$count_temp  = count ($productid);
for ($i = 0; $i < $count_temp; ++$i)

如果 IF 语句再次使用这个 $count_temp 来检查它是否是最后一个元素


回复评论:

How would this same method get the first element?

if ($i === 0)

或者

// Special CSS for $i = 0
// Start loop at 1 instead of 0
for ($i = 1; $i < $count_temp; ++$i)

【讨论】:

  • 这对我有用,但有一个问题......为什么在 FOR 循环中使用 count() 不好?
  • 因为它会在每次循环时重新计数,所以如果您的数组的长度 = 100 000,您将运行 count($array) 100 000 次,而不是在循环外执行 1 次.
  • 同样的方法如何获取第一个元素?
  • 我为第一个元素编辑了我的答案,请查看并告诉我它是否是您要查找的内容。
  • 哇,如果您有新的体面问题,请创建一个新帖子并删除这些 cmets。没有人可以在四个 cmets 中阅读此内容。
【解决方案2】:

像这样:

if($productid[$i] ==  $productid[count($productid)-1]){
    //last element code here
} elseif (($productid[$i] % 2 ){
   //even row code here
} else {
   //odd row code here
}

【讨论】:

    【解决方案3】:

    您可以使用 :last-child 纯粹使用 CSS 来完成此操作。所有现代浏览器都是supported。

    div.centerBoxContentsFeatured:last-child {
        /* special styles for last */
    }
    

    查看实际操作:http://jsfiddle.net/9y93j/1/

    【讨论】:

    • 除了我拥有的东西之外,我还尝试了这个,它有效,但不完全是我需要的。感谢您的反馈,我可以在其他项目中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2018-03-15
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多