2013-08-26 55 views
2

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

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%;">';} ?> 
+2

仅供参考,你不应该使用'<'但总是''语法这始终是????支持) – ThiefMaster

+0

你用'$ productid [count($ productid)-1]'得到最后一个元素。你的if构造虽然做了一些不同的事情。 – schoash

+2

如果您的最后一个div是其父项的最后一个子项,那么您可以简单地在CSS文件中使用':last-child'选择器。 – xec

回答

2

就检查它是否是最后的$的productid

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

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

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

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


答评论:

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) 
+0

这对我有效,但有一个问题......为什么在FOR循环中使用count()不好呢? –

+0

因为每次循环都会重新计数,所以如果你的数组的长度= 100 000,你将运行count($ array)100 000次,而不是在循环之外执行1次。 – Sugar

+0

这个相同的方法如何得到第一个元素? –

0

像这样:

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

您可以使用CSS :last-child纯粹做到这一点。所有现代浏览器都是supported

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

看到它在行动:http://jsfiddle.net/9y93j/1/

+0

我试过这除了我有,它的工作,但它不完全是我需要的。我可以在其他那些感谢反馈的项目中使用它。 –

相关问题