|
復(fù)制代碼 代碼如下:
header('Content-Type: text/html; charset=utf-8');
echo '<pre>';
function var_array($array)
{
echo '<pre>';
var_dump($array);
echo '</pre>';
}
function printr($array)
{
echo '<pre>';
print_r($array);
echo '</pre>';
}
function getArr($sNum, $eNum=1, $step=1)
{
$arr = range($sNum, $eNum, $step);
$reArr = array();
foreach($arr as $v)
{
$reArr[$v] = rand(0,10);
}
unset($arr);
return $reArr;
}
/**
* array數(shù)組練習(xí)
*/
//---------------------------------------------
//array_change_key_case() 改變數(shù)組索引的大小寫字母,由最后一個(gè)參數(shù)決定:CASE_UPPER(轉(zhuǎn)化為大寫),CASE_LOWER(默認(rèn) 轉(zhuǎn)化為小寫)
$expArr = array(
'fiRsT' => '1',
'sEcoNd' => '2',
'ThIrd' => array(
'HuiMa' => '3',
'nengZhuaNma' => '5',
)
);
printr(array_change_key_case($expArr));//全轉(zhuǎn)化為小寫
printr(array_change_key_case($expArr['ThIrd'], CASE_UPPER));//全轉(zhuǎn)化為大寫 只對(duì)$expArr數(shù)組里的某個(gè)index鍵轉(zhuǎn)化
//總結(jié):該函數(shù)只影響數(shù)組的一層。 并且不會(huì)對(duì)原數(shù)組產(chǎn)生影響
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_chunk($array, $size, false)
//將一個(gè)數(shù)組分割成一個(gè)多維數(shù)組,size決定這個(gè)數(shù)組每$size個(gè)成為一個(gè)多維數(shù)組, true/false決定新數(shù)組的鍵值是否沿用原數(shù)組的鍵
$expArr = array('4','2','6','d','2');
printr(array_chunk($expArr, 3));
//總結(jié):該函數(shù)只影響數(shù)組的一層。 并且不會(huì)對(duì)原數(shù)組產(chǎn)生影響
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_combine($keyArr, $valArr)
//將兩個(gè)數(shù)組組合成一個(gè)數(shù)組,$keyArr做為鍵,$valArr做為值
$expKey = array('g', 'd', 't');
$expVal = array('5', '8', '7');
printr(array_combine($expKey, $expVal));
//該函數(shù)同樣只影響數(shù)組的一層,并且返回一個(gè)新數(shù)組
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_count_values($array)
//統(tǒng)計(jì)$array數(shù)組中每個(gè)value出現(xiàn)的次數(shù),并以他個(gè)value做為新數(shù)組的鍵,出現(xiàn)次數(shù)做為value
$array = array('v1'=>'265', 'v2'=>'352', 'v3'=>'265', 'v4'=>'349', 'v5'=>'265');
printr(array_count_values($array));
//總結(jié):該函數(shù)只能用于統(tǒng)計(jì)值為 string和integer類型的value,其他類型會(huì)發(fā)warning!
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_diff($array1, $array2...)
//以$array1為基礎(chǔ)數(shù)組,他的值不出現(xiàn)在其他任何參數(shù)數(shù)組里的值組成一個(gè)新數(shù)組
$arr1 = array('v4'=>458, 'gren', 'b5', 'a5');
$arr2 = array('v4'=>598, 'red', 'a5', 'c4');
printr(array_diff($arr1, $arr2));
//總結(jié):拿一個(gè)數(shù)組到一堆數(shù)組中找出這個(gè)數(shù)組中沒有的值,統(tǒng)計(jì)、數(shù)據(jù)對(duì)比應(yīng)該會(huì)用到
//array_intersect($array, $parArr, ....)
//該函數(shù)同array_diff在功能上一樣,只是array_intersect()返回的是共有的數(shù)據(jù),array_diff則是只存在于$array中的數(shù)據(jù)
//
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_diff_assoc($array1, $array2...)
//同 array_diff()函數(shù),但是這個(gè)也會(huì)拿key進(jìn)行對(duì)比
//
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_diff_key
//同array_diff()函數(shù)
//只是這個(gè)只拿$array1的key去與其他參數(shù)數(shù)組進(jìn)行查找
//
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_diff_uassoc($arr1, $parArr...., 回調(diào)函數(shù))
//功能同array_diff(),但是需要用戶定義一個(gè)回調(diào)函數(shù)
//未明白該函數(shù)的作用
//
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_diff_ukey($arr1, $parArr...., 回調(diào)函數(shù))
//功能同array_diff_key(),只不過和array_diff_uassoc一樣,需要一個(gè)回調(diào)函數(shù)
//
//
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_fill($startInt, $numInt, $value)
//把$value填充到一個(gè)新數(shù)組,新數(shù)組的索引起始位置開始由$startInt決定,$numInt則控制這個(gè)數(shù)組生成多少個(gè)索引。
//tip:除了$value,$startInt,$numInt必須為數(shù)字,否則報(bào)錯(cuò)
printr(array_fill(2, 5, 'value'));
//總結(jié):還沒想到干啥用
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_fill_keys($arrKeys, $value);
//功能同array_fill()函數(shù)。只不過這里用$arrKeys【一個(gè)數(shù)組的值】來做為新數(shù)組的鍵
$arrKeys = array('45', 'd', 'b', 'c');
printr(array_fill_keys($arrKeys, 'value'));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_filter($arr, callBack回調(diào)函數(shù))
//過濾函數(shù),通過對(duì)$arr數(shù)組的值的判斷,如果 callBack回調(diào)函數(shù) 返回true,則將當(dāng)前鍵以及值添加到新的數(shù)組里
//TIP:回調(diào)函數(shù)可以寫個(gè)規(guī)則,來過濾掉里邊不符合規(guī)則的數(shù)組鍵
function cb($val)
{
return $val%2 == 0;
}
$array = array('k1'=>3, 'k2'=>5,'k4'=>54654, 'k5'=>8794, 8945, 32549564);
printr($array, 'cb');
//tip:回調(diào)函數(shù)名建議用引號(hào)引起來
//總結(jié):該方法可以做成一個(gè)數(shù)據(jù)過濾的集成
unset($array);
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_flip($array)
//將數(shù)組中key和value的關(guān)系轉(zhuǎn)換。只支持string和integr類型的鍵,其他類型將會(huì)發(fā)出警告,并且有問題的鍵值不轉(zhuǎn)換。在生成的新的數(shù)組,如果鍵相同,他會(huì)不停的替換掉現(xiàn)有鍵的值
$arr = array('k1'=>'v1', 'k2'=>'v2', 'k3'=>'v4', 'k4'=>'v4', 'k5'=>'v5');
printr(array_flip($arr));
unset($arr);
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_key_exists($key, $array)
//判斷一個(gè)鍵是否存在于當(dāng)前數(shù)組中,返回bool。也可用來判斷對(duì)象
$array = array('cb' => 234, 'dv'=>45, 'one'=>897);
if(array_key_exists('one', $array))
echo '存在這個(gè)數(shù)組中';
else
echo '不存在';
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_keys($array, $selSearch_value)
//返回?cái)?shù)組中的鍵名并組成一個(gè)新數(shù)組,如果指定了$selSearch_value值,那么將返回?cái)?shù)組里等于$selSearch_value的鍵名
$array = getArr(4, 10);
printr(array_keys($array));
printr(array_keys($array, '5'));//帶值的搜索
unset($array);
//總結(jié):這個(gè)也可用于數(shù)據(jù)統(tǒng)計(jì),數(shù)據(jù)對(duì)比驗(yàn)證
echo '<br/><hr/><br/>';
//---------------------------------------------
echo 'array_map:';
//array_map('callBack', $array,...)
//把傳入的函數(shù),返回經(jīng)callback回調(diào)函數(shù)的返回值
//回調(diào)函數(shù)也可以返回一個(gè)數(shù)組。并且,回調(diào)函數(shù)只接受一個(gè)數(shù)組里的值傳入
function mapCb($n)
{
return $n*$n*$n;
}
$array = getArr(4, 15);
printr(array_map('mapCb', $array));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_merge($array,$array2...)
//將多個(gè)數(shù)組組成一個(gè)數(shù)組,并對(duì)數(shù)字索引進(jìn)行重新編寫。
$arr1 = getArr(1, 5);
$arr2 = getArr(5, 10);
printr(array_merge($arr1, $arr2));
//總結(jié):將多個(gè)數(shù)組組成一個(gè)新數(shù)組。
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_merge_recursive($arr1, $arr2....)
//功能同上。但函數(shù)會(huì)將鍵名相同的值組成一個(gè)新數(shù)組,而不是替換掉
//但如果要用,根據(jù)實(shí)際情況使用
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_multisort()
//多維數(shù)組排序,目前只實(shí)現(xiàn)了二維數(shù)組排序。三維估計(jì)不能排
//該函數(shù)會(huì)直接改變員數(shù)組順序
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_pad($arr, $size, $value)
//對(duì)數(shù)組進(jìn)行填充,如果當(dāng)前$arr的長度小于$size,那么,就用$value來填充$arr數(shù)組,直至$arr的長度與$size相等
//如果$arr的長度大于或等于$size,那么該函數(shù)將不會(huì)對(duì)$arr進(jìn)行填充。 $size小于0則填充在$arr的左邊,大于0則右邊
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_pop($array)
//去掉數(shù)組的最后一個(gè)鍵。
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_product($arr)
//返回一個(gè)數(shù)組中所有數(shù)值的乘積。
//tip:該函數(shù)無法處理非數(shù)值類型的數(shù)據(jù)。如果傳入數(shù)組里包含‘a(chǎn)、b之類字符串',那么php會(huì)報(bào)錯(cuò)
$arr = array(4,5,5);
echo array_product($arr);
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_push($arr, $keyArr)
//將$keyArr添加到$arr數(shù)組的末尾,以key/棧的形式添加。
//與array_merge()、array_merge_recursive()兩函數(shù)的區(qū)別:
// arrap_push()是將一個(gè)$keyArr添加到$arr里邊,而其他兩個(gè)函數(shù)則是將多個(gè)函數(shù)連接成一個(gè)函數(shù)
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_rand($arr, $num=1)
//取出當(dāng)前數(shù)組里的鍵,取出幾個(gè)由$num決定,默認(rèn)為1
//如果$num為1,那么它將返回一個(gè)string
//如果$num>1 && $num<count($arr) 函數(shù)返回一個(gè)數(shù)組
//否則php報(bào)錯(cuò)
$arr = getArr(5, 15);
printr(array_rand($arr, 4));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_reduce()
//和array_map()類似,通過回調(diào)函數(shù),對(duì)數(shù)組里的數(shù)值進(jìn)行處理,并接受返回值
//該函數(shù)返回一個(gè)字符串。他會(huì)將數(shù)組里所有的值進(jìn)行計(jì)算,并返回計(jì)算后的值,而array_map則是對(duì)每個(gè)鍵下的值進(jìn)行計(jì)算,并返回array
//不是太明白,實(shí)例看手冊(cè)
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_replace($array, $parArr,...)
//用參數(shù)數(shù)組里鍵的值替換掉$array里相同鍵的值
//如果$array數(shù)組里在后邊的參數(shù)數(shù)組里沒有找到相應(yīng)的鍵,那么添加到新數(shù)組后邊
/*$arr = getArr(4, 10);
$arr2 = getArr(6, 15);
printr($arr);
printr($arr2);*/
$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "rASPberry"), );
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));
printr(array_replace($base, $replacements));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_replace_recursive() 遞歸替換
//功能同array_replace()一樣。區(qū)別在于:array_replace_recursive()可以對(duì)多維數(shù)組操作,并且不改變$array的結(jié)構(gòu),而array_replace()他最終會(huì)返回一個(gè)一維數(shù)組
$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "rASPberry"), );
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));
printr(array_replace_recursive($base, $replacements));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_reverse($arr)
//將數(shù)組里的鍵按相反順序排列
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_search($value, $array)
//在$array數(shù)組中去找值為$value的鍵名
//沒有找到則返回false
//如果$array數(shù)組鴻有多個(gè)$value,那么只返回第一個(gè)匹配的鍵
//該函數(shù)與array_keys()類似,區(qū)別在于返回值上:array_search()只會(huì)返回一個(gè)匹配的鍵名,而array_keys()則可以返回一個(gè)由所有匹配的鍵組成的一維數(shù)組
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_shift($arr)
//去掉當(dāng)前$arr數(shù)組里的第一個(gè)鍵,并且對(duì)后邊的數(shù)字索引進(jìn)行重新編排(但不改變?cè)许樞颍菙?shù)字索引不變。
//該函數(shù)與array_pop()類似,區(qū)別在于array_pop()去掉是最后一個(gè),array_shift()去掉腦袋
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_slice($arr, $offset, $length=0, false) 數(shù)組截取
//返回當(dāng)前$arr數(shù)組里從$offset處開始偏移,共$length個(gè)元素/鍵,并組成一個(gè)新數(shù)組返回
//如果$offset或者$length為負(fù)數(shù),那么就是向相反方向進(jìn)行偏移
//感覺和substring()字符串截取類似
//直接用php手冊(cè)上的實(shí)例了
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"
// note the differences in the array keys
printr(array_slice($input, 2, -1));
printr(array_slice($input, 2, -1, true));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_spslice($arr, $offset, $length)
//同array_slice()函數(shù)正好相反,該函數(shù)是去掉位于$offset和$length之間這些元素
unset($arr);
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_sum($arr)
//將$arr數(shù)組里的所有值進(jìn)行求和累加,如果是非數(shù)值類型的則嘗試進(jìn)行轉(zhuǎn)換,但是大部分轉(zhuǎn)換后為0
//該函數(shù)只會(huì)影響一層數(shù)組,和array_product()類似
$arr = array(
45,56, 'a', 'b'=>getArr(1, 2),
);
printr($arr);
echo 'array_sum($arr)',array_sum($arr);
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_values($arr)
//將$arr數(shù)組里的值提取出來,組成新的數(shù)組
$arr = array(
'k1'=>45,'k2'=>56, 'k3'=>'a', 'b'=>getArr(1, 2),
);
printr(array_values($arr));
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_unique($arr) 對(duì)數(shù)組進(jìn)行排重
//對(duì)$arr數(shù)組進(jìn)行排重,將重復(fù)的值進(jìn)行過濾。多個(gè)相同的值將只保留第一個(gè)
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_walk($arr, callback[回調(diào)函數(shù)], $sel_perfix='')
//對(duì)當(dāng)前數(shù)組下的每個(gè)鍵進(jìn)送到 callback函數(shù)里進(jìn)行處理
//如果加上$sel_perfix參數(shù),回調(diào)函數(shù)也要三個(gè)參數(shù)來接收,否則報(bào)錯(cuò)
//該函數(shù)只影響一層
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1";
}
printr(array_walk($fruits, 'test_print'));
array_walk($fruits, 'test_alter', 'fruit');
echo '<br/><hr/><br/>';
//---------------------------------------------
//array_walk_recursive()
//功能類似于array_alk();但是他會(huì)遞歸$arr的每一層數(shù)組,返回的數(shù)組不會(huì)改變?cè)袛?shù)組的結(jié)構(gòu)
echo '<br/><hr/><br/>';
//---------------------------------------------
//arsort($arr)
//按照數(shù)組鍵名排序數(shù)組,可以對(duì)字母進(jìn)行排序。如果排序失敗,將返回null
echo '<br/><hr/><br/>';
//---------------------------------------------
//asort()
//功能類似于arsort(),區(qū)別在于:asort()是對(duì)值進(jìn)行排序
php技術(shù):php array的學(xué)習(xí)筆記,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。