php 移除數(shù)組重復(fù)元素的一點(diǎn)說(shuō)明
更新時(shí)間:2008年11月27日 14:34:27 作者:
PHP中移除數(shù)組重復(fù)元素用的函數(shù)是array_unique
如:
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
print_r($test_array_unique);
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
print_r($test_array_unique);
但是至此,不要粗心,事還沒(méi)結(jié)束。細(xì)心的看你會(huì)發(fā)現(xiàn)經(jīng)管重復(fù)的元素被移除了,但是剩下來(lái)這些元素的索引沒(méi)有變化,這樣的話如果用for循環(huán)調(diào)用這個(gè)數(shù)組元素的時(shí)候就會(huì)發(fā)生錯(cuò)誤了,因?yàn)閒or循環(huán)的時(shí)候是按照數(shù)字遞增,而且大多數(shù)人用的是count($test_array_unique)來(lái)獲得數(shù)組的大小,這樣就會(huì)造成一些元素被遺漏;
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
for($i=0;$i<count($test_array_unique);$i++)
{
echo $test_array_unique[$i];
}
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
for($i=0;$i<count($test_array_unique);$i++)
{
echo $test_array_unique[$i];
}
這樣你不會(huì)看到元素6被輸出,因?yàn)?的索引是8,處理前的數(shù)組和處理后的數(shù)組索引沒(méi)有任何改變;
解決辦法:
當(dāng)然,這里解決辦法太多了,我介紹的只是一種我覺(jué)得比較簡(jiǎn)單的方法,那就是函數(shù)array_values,array_values是返回?cái)?shù)組的值,跟索引沒(méi)有關(guān)系,這樣處理后會(huì)形成一個(gè)新的數(shù)組,嚴(yán)格按照數(shù)字遞增的索引,這樣再使用for循環(huán)輸出邊一切OK了!
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_values(array_unique($test_array));
for($i=0;$i<count($test_array_unique);$i++)
{
echo $test_array_unique[$i];
}
復(fù)制代碼 代碼如下:
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
print_r($test_array_unique);
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
print_r($test_array_unique);
復(fù)制代碼 代碼如下:
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
for($i=0;$i<count($test_array_unique);$i++)
{
echo $test_array_unique[$i];
}
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_unique($test_array);
for($i=0;$i<count($test_array_unique);$i++)
{
echo $test_array_unique[$i];
}
解決辦法:
當(dāng)然,這里解決辦法太多了,我介紹的只是一種我覺(jué)得比較簡(jiǎn)單的方法,那就是函數(shù)array_values,array_values是返回?cái)?shù)組的值,跟索引沒(méi)有關(guān)系,這樣處理后會(huì)形成一個(gè)新的數(shù)組,嚴(yán)格按照數(shù)字遞增的索引,這樣再使用for循環(huán)輸出邊一切OK了!
復(fù)制代碼 代碼如下:
$test_array=array(1,2,3,4,4,5,5,6);
$test_array_unique=array_values(array_unique($test_array));
for($i=0;$i<count($test_array_unique);$i++)
{
echo $test_array_unique[$i];
}
相關(guān)文章
php empty,isset,is_null判斷比較(差異與異同)
做php開(kāi)發(fā)時(shí)候,想必在使用:empty,isset,is_null 這幾個(gè)函數(shù)時(shí)候,遇到一些問(wèn)題。甚至給自己的程序帶來(lái)一些安全隱患的bug。很多時(shí)候,對(duì)于isset,empty都認(rèn)為差不多。因此開(kāi)發(fā)時(shí)候,就沒(méi)有注意,一段作為流程判斷時(shí)候,就出現(xiàn)bug問(wèn)題了。2010-10-10你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí)
這篇文章主要介紹了你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí),本文講解了PHP浮點(diǎn)數(shù)、PHP數(shù)字的臨界值,精度損失等問(wèn)題,需要的朋友可以參考下2015-05-05php版微信公眾號(hào)接口實(shí)現(xiàn)發(fā)紅包的方法
這篇文章主要介紹了php版微信公眾號(hào)接口實(shí)現(xiàn)發(fā)紅包的方法,結(jié)合實(shí)例形式分析了php版微信公眾號(hào)實(shí)現(xiàn)發(fā)紅包的接口調(diào)用方法與相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2016-10-10PHP實(shí)現(xiàn)微信JS-SDK接口選擇相冊(cè)及拍照并上傳的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)微信JS-SDK接口選擇相冊(cè)及拍照并上傳的方法,涉及php微信接口的調(diào)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法
這篇文章主要介紹了php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法,涉及php查詢mysql及操作csv文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03PHP中static關(guān)鍵字原理的學(xué)習(xí)研究分析
PHP中static關(guān)鍵字原理的學(xué)習(xí)研究分析,學(xué)習(xí)php的朋友可以參考下。2011-07-07php 利用socket發(fā)送HTTP請(qǐng)求(GET,POST)
作為php程序員一定會(huì)接觸http協(xié)議,也只有深入了解http協(xié)議,編程水平才會(huì)更進(jìn)一步。最近我一直在學(xué)習(xí)php的關(guān)于http的編程,許多東西恍然大悟,受益匪淺。希望分享給大家。本文需要有一定http基礎(chǔ)的開(kāi)發(fā)者閱讀。2015-08-08