浏览次数:658次 悬赏分:100 | 解决时间:2010-8-10 16:25 | 提问者:Mr_janco
我用一个循环把若干元素逐个放到数组$tag[]里,
数组里面有重复的元素,所以我用$tag2 = array_unique($tag)把里面的重复元素删除,
之后再用一个上限足够大的for循环将这个$tag2数组中每个元素逐一输出,当然有许多元素因为被删除了是空的,所以循环里面也进行了判断strlen($tag2[$i]) > 0才输出,输出了n个元素。
1、但我用count($tag2)算出的的数组元素个数却比n少很多,按理说不是应该有n个吗?
2、为什么会出现这种情况?
3、PHP没有初始化元素个数的,因为经过删除重复元素的函数处理后,数组中原本的很多重复元素被删除,中间多了很多空的元素,大概50多个,count()的原理是计算到什么程度才停止的?
最佳答案
$tag2 = array_unique($tag)中$tag2,不包含空元素(你print_r($tag2)就知道),只是索引号不是连续的而已,count()本来就没算上那些空元素,如果想让索引变成连续的就用$tag2=array_values($tag2)就好了,不会改变顺序,如果只想遍历无所谓索引就这样试试
foreach($tag2 as $t)
{
echo $t;
}