這篇文章將為大家詳細(xì)講解有關(guān)php中有什么數(shù)組函數(shù),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、克山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
header('content-type:text/html;charset=utf-8;');
/*小結(jié)數(shù)組的使用*/
#1.array():定義數(shù)組eg:
$arr1=array('a','b','c','d');
$arr3=array('c','d','e','f');
$arr2=array('kA1'=>'v1','kA2'=>'v2','kA3'=>'v3');
$arr4=array('kA1'=>'v1','kA2'=>'v2','kA3'=>'v3','kA4'=>'v4');
$arr5=array('kA1'=>'v1','kA2'=>'v1','kA3'=>'v4','kA4'=>'v4');
$arr6=array('kA1'=>'v1','kA2'=>'v1','kA3'=>'v4','kA4'=>'v3');
$arr7=array('kA1'=>'v1','kA2'=>'v1');
#2.array_change_key_case(array,case):函數(shù)將數(shù)組所有的KEY都轉(zhuǎn)換成大寫(xiě)或小寫(xiě)。數(shù)組的數(shù)字索引不發(fā)生變化。如果未提供可選參數(shù)(即第二個(gè)參數(shù))則默認(rèn)轉(zhuǎn)換為小寫(xiě)字母
//case可選值:CASE_LOWER,默認(rèn)值,以小寫(xiě)字母返回?cái)?shù)組的鍵;CASE_UPPER:以大寫(xiě)字母返回?cái)?shù)組的鍵
//注:如果在運(yùn)行過(guò)程中,兩個(gè)鍵相同,則最后一個(gè)將覆蓋前面的
echo '
print_r($arr2);
echo '
大寫(xiě)鍵:';
print_r(array_change_key_case($arr2,CASE_UPPER));
echo '
小寫(xiě)鍵:';
print_r(array_change_key_case($arr2,CASE_LOWER));
#3.array_chunk(array,size,preserve_key):把數(shù)組分割為新的數(shù)組塊,size:新數(shù)組的大小,最后一個(gè)數(shù)組的單元數(shù)目可能會(huì)少幾個(gè)。preserve_key:bool,true,保留元數(shù)組的鍵名,false,分配新的數(shù)字鍵名
echo '
print_r($arr2);
echo '
preserve_key,默認(rèn)值false:';
print_r(array_chunk($arr2,2));
echo '
preserve_key,true:';
print_r(array_chunk($arr2,2,true));
#4.arry_combine($arr1,$arr2):第一個(gè)數(shù)組的值做鍵,第二個(gè)數(shù)組的值做值,組成一個(gè)新數(shù)組,這兩個(gè)數(shù)組既可以是索引數(shù)組也可以是關(guān)聯(lián)數(shù)組,若兩個(gè)數(shù)組的個(gè)數(shù)不相等,則返回false,若有嵌套數(shù)組則轉(zhuǎn)化為Array字符串,并報(bào)一個(gè)Notice的錯(cuò)
echo '
print_r($arr1);
echo '
原數(shù)組2:';
print_r($arr3);
echo '
新數(shù)組:';
$tarr=array_combine($arr1, $arr3);
print_r($tarr);
#5.array_count_value($arr1):本函數(shù)返回一個(gè)數(shù)組,其元素的鍵名是原數(shù)組的值,鍵值是該值在原數(shù)組中出現(xiàn)的次數(shù)
echo '
print_r($arr5);
echo '
新數(shù)組:';
$tarr=array_count_values($arr5);
print_r($tarr);
#6.array_diff($arr1,$arr2,……):該函數(shù)返回兩個(gè)數(shù)組的差集數(shù)組,但是不在任何其他參數(shù)數(shù)組中的鍵值,在返回?cái)?shù)組中鍵名保持不變
echo '
print_r($arr4);
echo '
原數(shù)組2:';
print_r($arr5);
echo '
新數(shù)組:';
$tarr=array_diff($arr4, $arr5);
print_r($tarr);
#7.array_diff_assc($arr1,$arr2,……):函數(shù)返回兩個(gè)數(shù)組的差集數(shù)組。該數(shù)組包括了所有在被比較的數(shù)組中,但是不在任何其他參數(shù)數(shù)組中的鍵和值。該函數(shù)和arry_diff_assc的區(qū)別是:本函數(shù)要求鍵名和鍵值都進(jìn)行比較。返回的數(shù)組中鍵名保持不變
echo '
print_r($arr4);
echo '
原數(shù)組2:';
print_r($arr6);
echo '
新數(shù)組:';
$tarr=array_diff_assoc($arr4, $arr6);
print_r($tarr);
#8.array_diff_key($arr1,$arr2,……):函數(shù)返回兩個(gè)數(shù)組的差集數(shù)組。該數(shù)組包括了所有在被比較的數(shù)組中,但是不在任何其他參數(shù)數(shù)組中的鍵和值。該函數(shù)和arry_diff_assc的區(qū)別是:本函數(shù)要求鍵名和鍵值都進(jìn)行比較。返回的數(shù)組中鍵名保持不變
echo '
print_r($arr4);
echo '
原數(shù)組2:';
print_r($arr7);
echo '
新數(shù)組:';
$tarr=array_diff_key($arr4, $arr7);
print_r($tarr);
#9.array_diff_uassoc:函數(shù)使用用戶自定義的回調(diào)函數(shù) (callback) 做索引檢查來(lái)計(jì)算兩個(gè)或多個(gè)數(shù)組的差集。返回一個(gè)數(shù)組,該數(shù)組包括了在 array1 中但是不在任何其他參數(shù)數(shù)組中的值。
#參數(shù) function 是用戶自定義的用來(lái)比較兩個(gè)數(shù)組的函數(shù),該函數(shù)必須帶有兩個(gè)參數(shù) - 即兩個(gè)要進(jìn)行對(duì)比的鍵名。因此與函數(shù) array_diff_assoc() 的行為正好相反,后者是用內(nèi)部函數(shù)進(jìn)行比較的。
echo '
function myfun($v1,$v2)
{
if ($v1===$v2)
{
return 0;
}
if ($v1>$v2)
{
return 1;
}
else
{
return -1;
}
}
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r($a1);
$a2=array(3=>"Dog",1=>"Cat",5=>"Horse");
echo '
原數(shù)組2:';
print_r($a2);
echo '
新數(shù)組:';
print_r(array_diff_uassoc($a1,$a2,'myfun'));
#10.array_diff_ukey() 返回一個(gè)數(shù)組,該數(shù)組包括了所有出現(xiàn)在 array1 中但是未出現(xiàn)在任何其它參數(shù)數(shù)組中的鍵名的值。注意關(guān)聯(lián)關(guān)系保留不變。與 array_diff() 不同的是,比較是根據(jù)鍵名而不是值來(lái)進(jìn)行的。
#11.array_fill(start,num,value),該函數(shù)返回一個(gè)索引從start開(kāi)始,包含的num個(gè)value的數(shù)組;
echo '
$val='huge';
print_r(array_fill(2, 5, $val));
#12.array_filter(arr,fun),函數(shù)用回調(diào)函數(shù)過(guò)濾數(shù)組中的元素,如果回調(diào)函數(shù)返回真,則保留該元素,否則過(guò)濾掉
function filter1($v){
if($v=='v1'){
return false;
}
return true;
}
echo '
print_r($arr2);
echo '
新數(shù)組:';
print_r(array_filter($arr2,'filter1'));
#13array_flip():該函將數(shù)組的鍵值互換,如果原數(shù)組中出現(xiàn)重復(fù)的鍵值,則最后一個(gè)值,將作為數(shù)組的值,其他的則將被丟棄,如果原函數(shù)中的鍵值出現(xiàn)非數(shù)字和字符串,該函數(shù)將報(bào)錯(cuò)
echo '
print_r($arr2);
echo '
新數(shù)組:';
print_r(array_flip($arr2));
#14.array_intersect($arr1,$arr2,……):該函數(shù)返回兩個(gè)或多個(gè)數(shù)組的交集數(shù)組,鍵名與第一個(gè)數(shù)組中鍵名保持一致
echo '
print_r($arr4);
echo '
原數(shù)組2:';
print_r($arr5);
echo '
新數(shù)組:';
$tarr=array_intersect($arr4, $arr5);
print_r($tarr);
#15.array_intersect_assoc($arr1,$arr2,……):該函數(shù)返回兩個(gè)或多個(gè)數(shù)組的交集數(shù)組,該函數(shù)除了比較值外還比較鍵
#16.array_intersect_key($arr1,$arr2,……):該函數(shù)使用鍵名比較來(lái)得到數(shù)組的交集
#17.array_intersect_uassoc($arr1,$arr2,……,function):該函數(shù)使用鍵名、值名比較來(lái)得到數(shù)組的交集
#18.array_intersect_ukey($arr1,$arr2,……,function):該函數(shù)使用鍵名比較來(lái)得到數(shù)組的交集
#19.array_key_exists():如果search中存在key則返回真,否則返回假
echo '
print_r($arr2);
echo '
結(jié)果:';
echo array_key_exists('kA1', $arr2);
#20.array_keys(arr,value),第二個(gè)參數(shù)可選,如果有則返回value對(duì)應(yīng)的鍵名構(gòu)成的數(shù)組,如果不填,則返回鍵名構(gòu)成的新數(shù)組
echo '
print_r($arr6);
echo '
默認(rèn)值:';
print_r(array_keys($arr6));
echo '
取單個(gè)key:';
print_r(array_keys($arr6,'v3'));
#21.array_map(fun,$arr1,$arr2,……):該函數(shù)根據(jù)fun,建立數(shù)組的映射關(guān)系,如果fun為null,則返回兩個(gè)數(shù)組組成的二維數(shù)組,如果為一個(gè)數(shù)組則根據(jù)數(shù)組的值,進(jìn)行對(duì)應(yīng)的輸出,如果是兩個(gè)數(shù)組,則進(jìn)行比較后輸出新的值,fun中參數(shù)的個(gè)數(shù)要和該函數(shù)數(shù)組的個(gè)數(shù)相同
function fun2($v){
if($v=='a'){
return 'this is a';
}
return $v;
}
function fun3($v1,$v2){
if($v1==$v2){
return 'Same';
}
return 'Diffrent';
}
echo '
print_r($arr1);
echo '
原數(shù)組2:';
$tarr=array('a','b','e','f');
print_r($tarr);
echo '
一個(gè)數(shù)組';
echo '
fun:null,';
print_r(array_map(null, $arr1));
echo '
fun:fun2,';
print_r(array_map('fun2', $arr1));
echo '
兩個(gè)數(shù)組';
echo '
fun:null,';
print_r(array_map(null, $arr1,$tarr));
echo '
fun:fun3,';
print_r(array_map('fun3', $arr1,$tarr));
#22array_merge($arr1,$arr2,……):該函數(shù)將多個(gè)數(shù)組進(jìn)行合并,如果有相同的鍵名,
#則前面的值將被后面的覆蓋,如果是數(shù)字索引,則鍵名以連續(xù)的方式重新索引
#如果傳入一個(gè)數(shù)組,則該函數(shù)將該數(shù)組的數(shù)字鍵以數(shù)字索引的方式從0開(kāi)始進(jìn)行重新索引
$a1=array(1 =>'value1' ,2 =>'value2' ,'k3' =>'value3','k4' =>'value4' ,'k5' =>'value5');
$a2=array('ke1' =>'value1' ,'k2' =>'valu2' ,'k3' =>'valu3','ke4' =>'valu4' ,'k5' =>'valu5');
echo '
print_r($a1);
echo '
原數(shù)組2:';
print_r($a2);
echo '
一個(gè)數(shù)組:';
print_r(array_merge($a1));
echo '
兩個(gè)個(gè)數(shù)組:';
print_r(array_merge($a1,$a2));
#23.array_merge_recursive($a1,$a2,……),該函數(shù)同array_merge相同,只是當(dāng)出現(xiàn)重復(fù)鍵名時(shí),
#該函數(shù)將以遞歸的形式生成一個(gè)子數(shù)組
echo '
print_r($a1);
echo '
原數(shù)組2:';
print_r($a2);
echo '
結(jié)果:';
print_r(array_merge_recursive($a1,$a2));
#24.array_multy_sort():函數(shù)可以對(duì)多個(gè)數(shù)組或多維數(shù)組進(jìn)行排序
#參數(shù)中數(shù)組被當(dāng)成一個(gè)表的列并以行來(lái)進(jìn)行排序,第一個(gè)參數(shù)是要排序的主要數(shù)組。
#如果數(shù)組中行(值)比較為相同的話,就會(huì)按照下一個(gè)輸入數(shù)組中相應(yīng)值的到校進(jìn)行排序,一次類(lèi)推
#第一個(gè)參數(shù)是數(shù)組,隨后每一個(gè)參數(shù)可能是數(shù)組,以可能是下面的排序標(biāo)識(shí)
#SORT_ASC:默認(rèn),升序
#SORT_DESC:降序
#隨后可以指定排序的類(lèi)型
#SORT_REGULAR:默認(rèn),將每一項(xiàng)按照常規(guī)順序進(jìn)行排序
#SORT_NUMERIC:將每一項(xiàng)按照數(shù)字書(shū)序排序
#SORT_STRING:將每一項(xiàng)按照字母順序排序
#注:字符串鍵名將會(huì)被保留,數(shù)字鍵名將會(huì)從0開(kāi)始以1逐漸遞增進(jìn)行重新索引
#排序類(lèi)型只能指定一種
echo '
$a1 = array('a' => 'B1','c'=>'A' );
$a3 = array('a' => 'B1','c'=>'A' );
print_r($a1);
echo '
原數(shù)組2:';
$a2= array('m' => 'X','f'=>'U' );
print_r($a2);
echo '
$a1結(jié)果:';
array_multisort($a1);
print_r($a1);
echo '
$a1,$a2結(jié)果:';
array_multisort($a3,$a2);
print_r($a3);
print_r($a2);
echo '
$a1,$a2降序結(jié)果:';
array_multisort($a3,SORT_ASC,SORT_STRING,$a2);
print_r($a3);
print_r($a2);
#25.array_pad($arr,size,valu),函數(shù)向一個(gè)數(shù)組中插入帶有指定值的指定
#數(shù)量的元素
#如果size是負(fù)的長(zhǎng)度值,則填補(bǔ)到左側(cè),反之填補(bǔ)到右側(cè),如果size小于數(shù)
#組的長(zhǎng)度該函數(shù)不會(huì)刪除任何元素
echo '
$ar1=array('a','s','d');
print_r($ar1);
$val='填充值';
echo '
正值結(jié)果:';
print_r(array_pad($ar1,5,$val));
echo '
負(fù)值結(jié)果:';
print_r(array_pad($ar1,-5,$val));
#26.array_pop($arr),刪除數(shù)組中的最后一個(gè)元素,并返回被刪除的元素
echo '
$ar1=array('a','s','d');
print_r($ar1);
echo '
被刪除的元素,結(jié)果:';
echo array_pop($ar1);
echo '
刪除后的數(shù)組,結(jié)果:';
print_r(array_pop($ar1));
#27.array_product($arr):函數(shù)計(jì)算并返回?cái)?shù)組的乘積,如果數(shù)組是非數(shù)字則返回0,
#該數(shù)組可以使多維數(shù)組
$tarr=array(1,2,3,array(1,2,3));
echo '
$res=array_product($tarr);
echo '結(jié)果:'.$res;
#28.array_push($arr,$va1,$va2……):函數(shù)將多個(gè)值壓入數(shù)組
echo '
$ar1=array('a','s','d');
print_r($ar1);
echo '
結(jié)果:';
array_push($ar1,'huge','huge2');
print_r($ar1);
#29.array_rand($arr,num):函數(shù)從數(shù)組中隨機(jī)選出一個(gè)或多個(gè)元素并返回。
#第二個(gè)參數(shù)用來(lái)確定要選出元素的個(gè)數(shù),如果不止一個(gè),則返回包含隨機(jī)
#鍵名的數(shù)組,否則返回該元素的鍵名
echo '
$a1=array(1 =>'value1' ,2 =>'value2' ,'k3' =>'value3','k4' =>'value4' ,'k5' =>'value5');
print_r($a1);
echo '
取1個(gè),結(jié)果:';
echo array_rand($a1);
echo '
取3個(gè),結(jié)果:';
print_r(array_rand($a1,3));
#30.array_reduce():函數(shù)用回調(diào)函數(shù)迭代第將數(shù)組簡(jiǎn)化為單一的值,如果指定第三個(gè)
#參數(shù)則該參數(shù)將被當(dāng)做是數(shù)組中的第一個(gè)值來(lái)處理,或則如果數(shù)組為空的話就作為最終的返回值
function myfun4($v1,$v2){
echo '
';
echo $v1.':'.$v2;
return $v1.'-'.$v2;
}
echo '
$arr=array('Dog','Cat','Horse');
print_r(array_reduce($arr,'myfun4','初始值'));
#31.array_reverse:該函數(shù)將數(shù)組中的順序翻轉(zhuǎn),創(chuàng)建新的數(shù)組并返回,
#如果是索引數(shù)組,若第二個(gè)參數(shù)指定為true,則元素的鍵名保持不變,否則鍵名將丟失(默認(rèn))
echo '
$arr=array('a'=>'Dog','b'=>'Cat','c'=>'Horse');
print_r($arr);
$arr1=array('Dog','Cat','Horse');
echo '
數(shù)組2:';
print_r($arr1);
echo '
關(guān)聯(lián)數(shù)組:';
print_r(array_reverse($arr));
echo '
索引數(shù)組:';
print_r(array_reverse($arr1,false));
#32.array_search(val,arr,strict):在數(shù)組中查找一個(gè)鍵值,如果找到了返回該鍵值對(duì)應(yīng)的鍵名
#反之,則返回false,當(dāng)?shù)谌齻€(gè)參數(shù)被指定為true時(shí),當(dāng)數(shù)據(jù)類(lèi)型和值都相等的情況下才返回對(duì)應(yīng)的鍵值
echo '
$arr=array('a'=>'Dog','b'=>'Cat','c'=>'Horse');
print_r($arr);
echo '
結(jié)果:';
echo array_search('Dog',$arr);
echo '
結(jié)果:';
#33.array_shift(arr):函數(shù)刪除數(shù)組中的第一個(gè)元素并返回該元素對(duì)應(yīng)的值
#如果是索引數(shù)組,所有元素將獲得新的鍵,從0開(kāi)始,并以1遞增
echo '
$arr=array('a'=>'Dog','b'=>'Cat','c'=>'Horse');
print_r($arr);
echo "
函數(shù)返回值";
echo array_shift($arr);
echo '
:數(shù)組輸出結(jié)果:';
print_r($arr);
#34.array_slice(arr,offset,length,preserve):函數(shù)在數(shù)組中取一段值,并返回,如果是索引數(shù)組則保留原來(lái)的鍵名
#arr:規(guī)定輸入的數(shù)組
#offset:規(guī)定取出元素的開(kāi)始位置,如果是正數(shù),則從前往后數(shù),負(fù)數(shù),則從后往前
#length:可選,數(shù)值規(guī)定返回?cái)?shù)組的長(zhǎng)度。如果是負(fù)數(shù),則從后向前,選取該絕對(duì)值數(shù)目的元素。如果未設(shè)置該值,則返回所有元素
#preserve:可選值,true保留鍵,false:默認(rèn),重置鍵
echo '
$arr=array('a'=>'Dog','b'=>'Cat','c'=>'Horse');
print_r(array_slice($arr,-2,1));
#35.array_splice(arr,offset,length,arr2):與array_slice()函數(shù)類(lèi)似,選擇數(shù)組中的一系列元素,但不返回,而是刪除它們并用其他值替代
#如果提供了第四個(gè)參數(shù),則之前選中的那些元素將被第四個(gè)參數(shù)指定的數(shù)組取代
#關(guān)聯(lián)數(shù)組,填入到新數(shù)組后將會(huì)按所以數(shù)組的形式重新索引
echo '
$arr=array('a'=>'Dog','b'=>'Cat','c'=>'Horse','e'=>'Pig');
$arr2=array('b'=>'Ha','c'=>'Hu');
$tarr=array_splice($arr,0,3,$arr2);
print_r($arr);
echo '
被剪切的部分:';
print_r($tarr);
echo '
:剪切后的數(shù)組:';
print_r($arr);
#36.array_sum():函數(shù)返回?cái)?shù)組中所有值的總和,字符串將被轉(zhuǎn)換為整數(shù)
$arr=array('a'=>"4",1=>"5",2=>6);
echo '
print_r($arr);
echo '
結(jié)果:';
echo array_sum($arr);
#37.array_udiff()函數(shù)返回一個(gè)數(shù)組,該數(shù)組包括了所有在被比較數(shù)組中,
#但是不在任何其他參數(shù)數(shù)組中的值,鍵名暴力與不變
#數(shù)據(jù)的比較式用array_diff函數(shù)的function進(jìn)行的,function函數(shù)帶有兩個(gè)將
#進(jìn)行比較的。function函數(shù)帶有兩個(gè)將進(jìn)行比較的參數(shù)。如果第一個(gè)參數(shù)小于第
#二個(gè)參數(shù),則函數(shù)返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等,則返回0,如果第一個(gè)參數(shù)
#大于第二個(gè),則返回一個(gè)正數(shù)
function myfun5($v1,$v2){
/*
echo '
';
echo "$v1:$v2";
echo '
';
*/
if($v1==$v2){
return 0;
}
return 1;
}
echo '
$a1=array('a'=>'Cat','b'=>'Bug1','c'=>'Horse1','d'=>'Horse_1');
print_r($a1);
$a2=array('Bug2','Cat','Fish');
echo '
原數(shù)組2:';
print_r($a2);
echo '
結(jié)果:';
print_r(array_udiff($a1,$a2,'myfun5'));
#38.array_udiff_assoc:函數(shù)返回arr1中存在但其他數(shù)組都不存在的部分。函數(shù)要比較鍵、值;
echo '
$a1=array('a'=>'Cat','b'=>'Bug1','c'=>'Horse1','d'=>'Horse_1');
print_r($a1);
$a2=array('Bug2','a'=>'Cat','Fish');
echo '
原數(shù)組2:';
print_r($a2);
echo '
結(jié)果:';
print_r(array_udiff_assoc($a1,$a2,'myfun5'));
#39.array_udiff_uassoc:函數(shù)返回 array1 數(shù)組中存在但其它數(shù)組中都不存在的部分。返回的數(shù)組中鍵名保持不變。
function myfunction_key($v1,$v2)
{
if ($v1===$v2)
{
return 0;
}
return 1;
}
function myfunction_value($v1,$v2)
{
if ($v1===$v2)
{
return 0;
}
return 1;
}
echo '
$a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
$a2=array("a"=>"Cat","b"=>"Dog","c"=>"Fish");
print_r(array_udiff_uassoc($a1,$a2,"myfunction_key","myfunction_value"));
#40.array_uintersect():函數(shù)計(jì)算數(shù)組的交集,用回調(diào)函數(shù)比較數(shù)據(jù)
function myfunction($v1,$v2)
{
if ($v1===$v2)
{
return 0;
}
if ($v1 > $v2) return 1;
{
return -1;
}
return 1;
}
echo '
$a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
$a2=array(1=>"Cat",2=>"Dog",3=>"Fish");
print_r(array_uintersect($a1,$a2,"myfunction"));
#41.array_uintersect_assoc:與 array_uintersect() 不同的是鍵名也要比較。數(shù)據(jù)(鍵值)是用回調(diào)函數(shù)比較的。
function myfunction1($v1,$v2)
{
if ($v1===$v2)
{
return 0;
}
return 1;
}
$a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
$a2=array("a"=>"Cat","b"=>"Horse","c"=>"Dog");
echo '
print_r(array_uintersect_assoc($a1,$a2,"myfunction1"));
#42.array_uniqe():函數(shù)移除數(shù)組中的重復(fù)發(fā)的值,當(dāng)幾個(gè)數(shù)組的值相等時(shí),只保留第一個(gè)元素,其他元素被刪除,
#返回?cái)?shù)組中的鍵名保持不變
echo '
$a=array('a'=>'Cat','b'=>'Dog','c'=>'Cat');
print_r($a);
echo '
結(jié)果:';
print_r(array_unique($a));
#43.array_unshift()函數(shù):函數(shù)在數(shù)組開(kāi)頭插入一個(gè)或多個(gè)元素。
#被加入的元素作為一個(gè)整體添加,這些元素在數(shù)組中的順序一樣。
#該函數(shù)會(huì)返回?cái)?shù)組中元素的個(gè)數(shù)
echo '
$a=array('a'=>'Cat','b'=>'Dog');
print_r($a);
echo '
結(jié)果:數(shù)組個(gè)數(shù),';
echo array_unshift($a,'Horse');
echo ';數(shù)組,';
print_r($a);
#44.array_values:函數(shù)返回一個(gè)包含給定數(shù)組中所有鍵值的數(shù)組,但不保留鍵名
echo '
$a=array('a'=>'Cat','b'=>'Dog');
print_r($a);
echo '
結(jié)果:';
print_r(array_values($a));
#45.array_walk():函數(shù)對(duì)數(shù)組中的每個(gè)元素應(yīng)用回調(diào)函數(shù),如果成功返回TRUE,反之返回false
#典型情況下function接受兩個(gè)參數(shù),array參數(shù)的值作為第一個(gè),鍵名作為第二個(gè),如果提
#了可選參數(shù)userdata,將被作為第三個(gè)參數(shù)傳遞給回調(diào)函數(shù)
#如果function函數(shù)需要的參數(shù)比給出的多,則每次array_walk調(diào)用function時(shí)都會(huì)產(chǎn)生一個(gè)E_WARNING
#級(jí)的錯(cuò)誤。這些警告可以通過(guò)在array_walk()調(diào)用前加上php的錯(cuò)誤操作符@來(lái)抑制,或者用error——reporting()
echo '
function myfun6($v,$k){
echo "
The key $k has the value $v
";
}
$a=array('a'=>'Cat','b'=>'Dog','c'=>'Horse');
print_r($a);
echo '
結(jié)果:';
array_walk($a,'myfun6');
function myfun7($value,$key,$p)
{
echo "$key $p $value
";
}
array_walk($a,"myfun7","has the value");
#46.array_walk_recursive():函數(shù)與array_walk不一樣的是,如果原數(shù)組中的元素也是數(shù)組,就會(huì)遞歸地調(diào)用回調(diào)函數(shù)
echo '
$a1=array("a"=>"Cat","b"=>"Dog");
$a2=array($a1,"1"=>"Bird","2"=>"Horse");
print_r($a2);
array_walk_recursive($a2,"myfun6");
#47.array_arsort(arr,sorttype):函數(shù)對(duì)數(shù)組進(jìn)行你想排序并保持索引關(guān)系。主要用于對(duì)那些單元順序很重要的結(jié)合數(shù)組進(jìn)行排序
#可選的第二個(gè)參數(shù)包含了附加的排序標(biāo)識(shí),如果成功則返回true,反之返回false。
#其中sorttype的可能值有:
#SORT_REQULAR-默認(rèn)。以他們?cè)瓉?lái)的類(lèi)型進(jìn)行處理(不改變類(lèi)型)
#SORT_NUMERIC,把值作為數(shù)字來(lái)處理
#SORT_STRING,把值作為字符串來(lái)處理
#SORT_LOCAL_STRING,把值作為字符串來(lái)處理,基于本地設(shè)置
echo '
$a1=array("a"=>"Cat","b"=>"Dog");
print_r($a1);
echo '
結(jié)果:';
arsort($a1);
print_r($a1);
#48.array_sort(arr,sorttype):對(duì)數(shù)組進(jìn)行正向排序,參數(shù)同上
echo '
$a1=array("b"=>"Dog","a"=>"Cat");
print_r($a1);
echo '
結(jié)果:';
asort($a1);
print_r($a1);
#49.compact()函數(shù)創(chuàng)建一個(gè)由參數(shù)所帶變量組成的數(shù)組。如果參數(shù)中存在數(shù)組,該數(shù)組中變量的值也被獲取
#本函數(shù)返回一個(gè)關(guān)聯(lián)數(shù)組,鍵名為函數(shù)參數(shù),鍵值為參數(shù)中變量的值;
#compact(var1,var2),中參數(shù)可以是帶變量名的字符串,或者是一個(gè)變量數(shù)組
#注:任何沒(méi)有變量名與之對(duì)應(yīng)的字符串都被略過(guò)
echo '
$first='LI';
$last='Huge';
//$none='';//有空值
$arr=compact('first','last','none');
print_r($arr);
#50.count():函數(shù)計(jì)算數(shù)組匯總的單元數(shù)目或?qū)ο笾袑傩詡€(gè)數(shù)
#對(duì)于數(shù)組返回其元素的個(gè)數(shù),對(duì)于其他值,返回1.
#如果參數(shù)是變量,而變量沒(méi)定義,則返回0如果mode設(shè)置為COUNT_RECURSIVE(或1),則會(huì)遞歸
echo '
$b1=array("c"=>"Dog","d"=>"Cat");
$a1=array("b"=>"Dog","a"=>"Cat",$b1);
print_r($a1);
echo "
默認(rèn)結(jié)果:";
echo count($a1);
echo "
檢測(cè)多維數(shù)組結(jié)果:";
echo count($a1,COUNT_RECURSIVE);
#51.current():函數(shù)返回?cái)?shù)組中的當(dāng)前元素
#每個(gè)數(shù)組內(nèi)部都有一個(gè)內(nèi)部指針指向它當(dāng)前的元素,初始指向插入到數(shù)組中第一個(gè)元素
#該函數(shù)返回當(dāng)前被內(nèi)部指針指向的數(shù)組元素,并不移動(dòng)指針,如果內(nèi)部指針指向超出了單元列表的末端
#,current()返回false
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
echo current($a1);
#51.each():函數(shù)生成一個(gè)由數(shù)組內(nèi)部指針?biāo)赶虻脑氐逆I名和鍵值組成的數(shù)組,并把內(nèi)部指針向前移動(dòng),如果內(nèi)部指針越界返回false
#0,key指向當(dāng)前數(shù)組元素鍵名,1,value指向當(dāng)前數(shù)組元素的鍵值
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
print_r(each($a1));
#52.end():函數(shù)將數(shù)組內(nèi)部指針指向最后一個(gè)元素,并返回該元素的值(如果成功)
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
echo end($a1);
#53.extract(arr,type,prefix):函數(shù)從數(shù)組中把變量導(dǎo)入到當(dāng)前的符號(hào)表中
#對(duì)數(shù)組中的每個(gè)元素,鍵名用于變量名,鍵值用于變量值。
#type用于指定當(dāng)變量已經(jīng)存在,而數(shù)組中又有同名元素時(shí),函數(shù)如何對(duì)待這樣的沖突
#函數(shù)返回成功設(shè)置的變量數(shù)目
#extract_rules可選值:函數(shù)將檢查每個(gè)鍵名是否合法,同時(shí)也檢查和符號(hào)表中的變量名是否沖突
#EXTR_OVERWRITE,默認(rèn),如果存在,則覆蓋已有變量
#EXTR_SKIP,如果存在不覆蓋已有的變量,忽略數(shù)組中的同名元素
#EXTR_PREFIX_SAME,如果有沖突,在變量名前加上前綴
#EXTR_PREFIX_ALL,給所有的變量名加上前綴
#EXTR_PREFIX_INVALID,僅在非法會(huì)數(shù)字變量名前加上前綴
#EXTR_IF_EXISTS,僅在當(dāng)前符號(hào)表中已有同名變量時(shí),覆蓋他們的值。其他都不做處理
#EXTR_PREFIX_IF_EXISTS,僅在當(dāng)前符號(hào)表中已有同名變量時(shí),建立附加前綴的變量名
#EXTR_PRFS,將變量作為引用提取
#prefix僅在type包含PREFIX時(shí)有效,如果附加了前綴后結(jié)果依然不合法,結(jié)果將不會(huì)導(dǎo)入到符號(hào)表中
#前綴和數(shù)組鍵名之間會(huì)自動(dòng)加上一個(gè)下劃線
echo '
$c='章魚(yú)';
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
默認(rèn)結(jié)果:";
extract($a1);
echo $c.','.$d;
#54.in_array(value,arr,type):在數(shù)組中搜索給定的值
#如果type設(shè)置為true,則搜索的值存在于數(shù)組中并且類(lèi)型相同時(shí),才會(huì)返回true
echo '
$a1=array("c"=>"1","d"=>"Cat");
print_r($a1);
$c=1;
echo "
結(jié)果1:";
echo in_array($c,$a1);
#55.key($arr):函數(shù)返回?cái)?shù)組中的當(dāng)前元素的鍵值
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
echo key($a1);
#56.krsort(arr,sorttype):函數(shù)將數(shù)組按鍵逆向排序,為數(shù)組保留原來(lái)的鍵
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
krsort($a1);
print_r($a1);
#57.ksort(arr,sorttype):函數(shù)將數(shù)組按鍵正向排序,為數(shù)組保留原來(lái)的鍵
echo '
$a1=array("c"=>"Dog","d"=>"Cat","a"=>"Horse");
print_r($a1);
echo "
結(jié)果:";
ksort($a1);
print_r($a1);
#58.list(var1,var2...):函數(shù)用數(shù)組中的元素為一組變量賦值
#函數(shù)只用于數(shù)字索引數(shù)組,切假定數(shù)字索引從0開(kāi)始
echo '
$a1=array("Dog","Cat");
print_r($a1);
echo "
結(jié)果:";
list($a,$b)=$a1;
echo $a;
#59.natcasesort()函數(shù)用不區(qū)分大小寫(xiě)的自然順序算法對(duì)給定數(shù)組中元素排序
#自然排序:數(shù)字從1到9字母從a-z短者優(yōu)先,該函數(shù)不區(qū)分大小寫(xiě)。
#natcasesort是natsort不區(qū)分大小寫(xiě)字母的版本
#如果成功,則返回true,反之,返回false
echo '
$a1= array("temp15.txt","Temp10.txt","temp1.txt","Temp22.txt","temp2.txt");
print_r($a1);
echo "
natsort結(jié)果:";
natsort($a1);
print_r($a1);
echo '
natcasesort結(jié)果:';
$a1= array("temp15.txt","Temp10.txt","temp1.txt","Temp22.txt","temp2.txt");
natcasesort($a1);
print_r($a1);
#60.next():函數(shù)把指向當(dāng)前元素的指針移動(dòng)到下一個(gè)元素,并返回當(dāng)前元素的值
#如果內(nèi)部指針已經(jīng)超過(guò)數(shù)組的最后一個(gè)元素,函數(shù)返回一個(gè)false
#注:如果數(shù)組包含空的單元,或者單元的值是 0 則該函數(shù)碰到這些單元也返回 FALSE。要正確遍歷可能含有空單元或者單元值為 0 的數(shù)組
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
echo next($a1);
#61.pos(arr):pos是current()的別名,他返回當(dāng)前元素的值;
#62.prev(arr):同next(arr),函數(shù)把指向當(dāng)前元素的指針移動(dòng)到上一個(gè)元素的位置,并返回當(dāng)前元素的值,
#注意事項(xiàng)同next
echo '
$a1=array("c"=>"Dog","d"=>"Cat");
print_r($a1);
echo "
結(jié)果:";
next($a1);
echo prev($a1);
#63.range(first,second,step):函數(shù)創(chuàng)建并返回一個(gè)包含指定范圍的元素的數(shù)組
#first,數(shù)組元素的最小值
#second,規(guī)定數(shù)組元素的最大值
#step,規(guī)定元素之間的步進(jìn)制,默認(rèn)是1
#該函數(shù)創(chuàng)建一個(gè)數(shù)組,包含從first到second(包含first和second)之間的整數(shù)或
#字符,如果first比second小則返回反序的數(shù)組
echo '
$a=range('a','d',2);
print_r($a);
#64.reset(arr):函數(shù)把數(shù)組內(nèi)部指針指向第一個(gè)元素并返回這個(gè)元素的值
echo '
$a=array('a','d',2);
print_r($a);
next($a);
echo '
當(dāng)前值:';
echo current($a);
echo '
重置后:';
echo reset($a);
#65.rsort(arr,sorttype):函數(shù)對(duì)數(shù)組的元素按照鍵值進(jìn)行逆向排序,sorttype類(lèi)型同asort
echo '
$a=array('a','d',2);
print_r($a);
echo '
結(jié)果:';
rsort($a);
print_r($a);
#66.shuffle()函數(shù)把數(shù)組中的元素按隨機(jī)順序重新排列,若成功返回true,否則返回false
#注:本函數(shù)為數(shù)組中單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序
echo '
$a1=array("c"=>"Dog","d"=>"Cat","a"=>"Horse");
print_r($a1);
echo '
結(jié)果:';
shuffle($a1);
print_r($a1);
#67.sizeof(arr,mode):函數(shù)計(jì)算數(shù)組中單元數(shù)目或?qū)ο笾袑傩詡€(gè)數(shù),count()的別名
#68.sort()函數(shù)按升序?qū)o定數(shù)組的值進(jìn)行排序,本函數(shù)為數(shù)組的單元賦予新的鍵名,原有的鍵名將被刪除
echo '
$a1=array("c"=>"Dog","d"=>"Cat","a"=>"Horse");
print_r($a1);
echo '
結(jié)果:';
sort($a1);
print_r($a1);
#69.uasort(arr,fun):函數(shù)用用戶自定義的比較函數(shù)對(duì)數(shù)組排序,并保持索引關(guān)聯(lián)
#uksort(arr,fun):函數(shù)使用戶自定義的比較函數(shù)按照鍵名對(duì)數(shù)組排序,并保持索引關(guān)系
#usort(arr,fun)函數(shù)用用戶自定義的函數(shù)對(duì)數(shù)組排序,會(huì)刪除原有的鍵名
#其中fun是用戶自定義函數(shù),函數(shù)設(shè)計(jì)必須為返回-1,0,1并接受兩個(gè)供比較的參數(shù),同時(shí)以類(lèi)
#似下面的方式來(lái)工作
#a=b,返回0
#a>b,返回1
#a
function myfun8($a,$b){//逆向排序
echo "
$a:$b
";
if($a==$b){
return 0;
}elseif($a>$b){
return -1;
}else{
return 1;
}
}
$a1=array("c"=>"Dog","d"=>"Cat","a"=>"Horse","c1"=>"Dog1","d1"=>"Cat1","a1"=>"Horse1");
echo '
print_r($a1);
echo '
uasort(array, cmp_function):';
uasort($a1,'myfun8');
print_r($a1);
echo '
uksort(array, cmp_function):';
$a1=array("c"=>"Dog","d"=>"Cat","a"=>"Horse");
uksort($a1,'myfun8');
print_r($a1);
echo '
usort(array, cmp_function):';
$a1=array("c"=>"Dog","d"=>"Cat","a"=>"Horse");
usort($a1,'myfun8');
print_r($a1);
關(guān)于“php中有什么數(shù)組函數(shù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。