首頁 > 後端開發 > php教程 > php array的學習筆記

php array的學習筆記

黄舟
發布: 2023-03-03 14:40:01
原創
1108 人瀏覽過

. 代碼如下:


header('Content-Type: text/html; charset=utf-8'); 
echo '

'; <br>function var_array($array) <br>{ <br>echo '<pre class="brush:php;toolbar:false">'; array); <br>echo '
登入後複製
'; 

function printr($array) 

echo '
'; <br>print_r($array); 🠎 function getArr($sNum, $eNum=1, $step=1) <br>{ <br>$arr = range($sNum, $eNum, $step); <br>$reArr = array(); ) <br>{ <br>$reArr[$v] = rand(0,10); <br>} <br>unset($arr); <br>return $reArr; <br>} <br>/** <br>* array陣列練習 <br>#//1/---- ----------------------------------------- <br>//array_change_key_case() 改變陣列索引的大小寫字母,由最後一個參數決定:CASE_UPPER(轉換為大寫),CASE_LOWER(預設轉換為小寫) <br>$expArr = array( <br>'fiRsT' => '1', <br>'sEcoNd' => '2' , <br>'ThIrd' => array( <br>'HuiMa' => '3', <br>'nengZhuaNma' => '5', <br>) <br>); <br>printr(array_change_r(array_change_case)( <br>printr(array_change_key_case($expArr['ThIrd'], CASE_UPPER));//全部轉換成大寫只對$expArr數組裡的某個index鍵轉換 <br>//總結:此函數只會影響數組的一層。 且不會對原數組產生影響 <br>echo '<br><hr><br>'; <br>//---------------------- ----------------------- <br>//array_chunk($array, $size, false) <br>//將一個陣列分割成一個多維數組,size決定這個陣列每$size個成為一個多維數組, true/false決定新數組的鍵值是否沿用原始數組的鍵 <br>$expArr = array('4','2','6','d','2 '); <br>printr(array_chunk($expArr, 3)); <br>//總結:此函數只會影響陣列的一層。 且不會對原數組產生影響 <br>echo '<br><hr><br>'; <br>//---------------------- ----------------------- <br>//array_combine($keyArr, $valArr) <br>//將兩個陣列組合成一個數組,$keyArr做為鍵,$valArr做為值 <br>$expKey = array('g', 'd', 't'); <br>$expVal = array('5', '8', '7'); <br>printr(array_combine( $expKey, $expVal)); <br>//此函數同樣只會影響陣列的一層,並且傳回新陣列 <br>echo '<br><hr><br>'; <br>//---- ----------------------------------------- <br>//array_count_values($array) <br> //統計$array數組中每個value出現的次數,並以他個value做為新數組的鍵,出現次數做為value <br>$array = array('v1'=>'265', 'v2'= >'352', 'v3'=>'265', 'v4'=>'349', 'v5'=>'265'); <br>printr(array_count_values($array)); <br>//總結:此函數只能用於統計值為string和integer類型的value,其他型別會發warning! <br>echo '<br><hr><br>'; <br>//------------------------------ --------------- <br>//array_diff($array1, $array2...) <br>//以$array1為基礎數組,他的值不出現在其他任何參數數組裡的值組成一個新數組 <br>$arr1 = array('v4'=>458, 'gren', 'b5', 'a5'); <br>$arr2 = array('v4'=>598, 'red', ' a5', 'c4'); <br>printr(array_diff($arr1, $arr2)); <br>//總結:拿一個數組到一堆數組中找出這個數組中沒有的值,統計、數據對比應該會用到 <br>//array_intersect($array, $parArr, ....) <br>//該函數同array_diff功能上一樣,只是array_intersect()回傳的是共有的數據,array_diff則是只存在於$array中的資料 <br>// <br>echo '<br><hr><br>'; <br>//-------------------------- ------------------- <br>//array_diff_assoc($array1, $array2...) <br>//同array_diff()函數,但這個也會拿key做對比<br>// <br>echo '<br><hr><br>'; <br>//--------------------------- ------------------ <br>//array_diff_key <br>//同array_diff()函數 <br>//只是這個只拿$array1的key去與其他參數數組進行查找 <br>/ / <br>echo '<br><hr><br>'; <br>//------------------------------- -------------- <br>//array_diff_uassoc($arr1, $parArr...., 回呼函數) <br>//功能同array_diff(),但需要使用者定義一個回呼函數 <br>/ /未明白此函數的功能 <br>// <br>echo '<br><hr><br>'; <br>//-------------------- ------------------------- <br>//array_diff_ukey($arr1, $parArr...., 回呼函數) <br>//功能同array_diff_key( ),只不過和array_diff_uassoc一樣,需要一個回呼函數 <br>// <br>// <br>echo '<br><hr><br>'; <br>//------------ --------------------------------- <br>//array_fill($startInt, $numInt, $value) <br>//把$value填入一個新數組,新數組的索引起始位置開始由$startInt決定,$numInt則控制這個數組產生多少個索引。 <br>//tip:除了$value,$startInt,$numInt必須為數字,否則報錯 <br>printr(array_fill(2, 5, 'value')); <br>//總結:還沒想到幹啥用 <br>echo '<hr><br>'; <br>//---------------------------------- ----------- <br>//array_fill_keys($arrKeys, $value); <br>//功能同array_fill()函數。只不過這裡用$arrKeys【一個陣列的值】來做為新數組的鍵 <br>$arrKeys = array('45', 'd', 'b', 'c'); <br>printr(array_fill_keys($arrKeys, 'value')); <br>echo '<br><hr><br>'; <br>//------------------------ --------------------- <br>//array_filter($arr, callBack回呼函數) <br>//過濾函數,透過對$arr數組的值的判斷,如果callBack回呼函數傳回true,則將目前鍵以及值加到新的陣列裡 <br>//TIP:回呼函數可以寫個規則,來過濾掉裡面不符合規則的陣列鍵 <br>function cb($val) <br>{ <br> return $val%2 == 0; <br>} <br>$array = array('k1'=>3, 'k2'=>5,'k4'=>54654, 'k5'=>8794, 8945, 32549564); <br>printr($array, 'cb'); <br>//tip:回呼函數名稱建議用引號引起來 <br>//總結:該方法可以做成一個資料過濾的整合 <br>unset($array); <br>echo '<hr><br>'; <br>//---------------------------------- ----------- <br>//array_flip($array) <br>//將陣列中key和value的關係轉換。只支援string和integr類型的鍵,其他類型將會發出警告,並且有問題的鍵值不會轉換。在產生的新的數組,如果鍵相同,他會不停的替換掉現有鍵的值 <br>$arr = array('k1'=>'v1', 'k2'=>'v2', 'k3' =>'v4', 'k4'=>'v4', 'k5'=>'v5'); <br>printr(array_flip($arr)); <br>unset($arr); <br>echo '<br><br>'; <br>//-------------------------------------- ------- <br>//array_key_exists($key, $array) <br>//判斷一個鍵是否存在於目前陣列中,回傳bool。亦可用於判斷物件 <br>$array = array('cb' => 234, 'dv'=>45, 'one'=>897); <br>if(array_key_exists('one', $array)) <br>echo '存在這個陣列中'; <br>else <br>echo '不存在'; <br>echo '<br><hr><br>'; <br>//---------------- ----------------------------- <br>//array_keys($array, $selSearch_value) <br>//傳回陣列中的鍵名並組成一個新數組,如果指定了$selSearch_value值,那麼將回傳數組裡等於$selSearch_value的鍵名 <br>$array = getArr(4, 10); <br>printr(array_keys($array)); array, '5'));//帶值的搜尋 <br>unset($array); <br>//總結:此也可用於資料統計,資料比較驗證 <br>echo '<br><hr><br>'; <br>//-------------------------------------------- - <br>echo 'array_map:'; <br>//array_map('callBack', $array,...) <br>//把傳入的函數,傳回經callback回呼函數的回傳值 <br>//回呼函數也可以回傳一個數組。而且,回呼函數只接受一個陣列裡的值傳入 <br>function mapCb($n) <br>{ <br>return $n*$n*$n; <br>} <br>$array = getArr(4, 155); ('mapCb', $array)); <br>echo '<br><hr><br>'; <br>//--------------------------------------------- <br>// array_merge($array,$array2...) <br>//將多個數組組成一個數組,並重新編寫數字索引。 <br>$arr1 = getArr(1, 5); <br>$arr2 = getArr(5, 10); <br>printr(array_merge($arr1, $arr2)); <br>//總結:將多個陣列組成一個新陣列。 <br>echo '<br><hr><br>'; <br>//------------------------------ --------------- <br>//array_merge_recursive($arr1, $arr2....) <br>//功能同上。但函數會將鍵名相同的值組成一個新數組,而不是替換掉 <br>//但如果要用,根據實際情況使用 <br>echo '<br><hr><br>'; <br>// --------------------------------------------- <br>//array_multisort( ) <br>//多維數組排序,目前只實現了二維數組排序。三維估計值不能排 <br>//此函數會直接改變員數組順序 <br>echo '<br><hr><br>'; <br>//--------------- ------------------------------ <br>//array_pad($arr, $size, $value) <br>//對陣列進行填充,如果目前$arr的長度小於$size,那麼,就用$value來填充$arr數組,直至$arr的長度與$size相等 <br>//如果$arr的長度大於或等於$size,那麼該函數將不會對$arr進行填滿。 $size小於0則填入$arr的左邊,大於0則右邊 <br>echo '<br><hr><br>'; <br>//-------------- ------------------------------- <br>//array_pop($array) <br>//去掉陣列的最後一個鍵。 <br>echo '<br><hr><br>'; <br>//------------------------------ --------------- <br>//array_product($arr) <br>//傳回一個陣列中所有數值的乘積。 <br>//tip:此函數無法處理非數值類型的資料。如果傳入陣列裡包含'a、b之類字串',那麼php會報錯 <br>$arr = array(4,5,5); <br>echo array_product($arr); <br>echo '<br><hr><br>'; <br>//--------------------------------------- ------ <br>//array_push($arr, $keyArr) <br>//將$keyArr加入$arr數組的結尾,以key/堆疊的形式加入。 <br>//與array_merge()、array_merge_recursive()兩個函數的差異: <br>// arrap_push()是將一個$keyArr加到$arr裡邊,而其他兩個函數則是將多個函數連接成一個函數<br>echo '<br><hr><br>'; <br>//-------------------------------- ------------- <br>//array_rand($arr, $num=1) <br>//取出目前陣列裡的鍵,取出幾個由$num決定,預設為1 <br>//如果$num為1,那麼它將回傳一個string <br>//如果$num>1 && $num<count></count>//否則php報錯 <br>$arr = getArr(5, 15); <br>printr(array_rand($arr, 4)); <br>echo '<br><hr><br>'; <br>//------------------ --------------------------- <br>//array_reduce() <br>//和array_map()類似,透過回呼函數,對陣列裡的數值進行處理,並接受回傳值 <br>//該函數傳回一個字串。他會將陣列裡所有的值進行計算,並傳回計算後的值,而array_map則是對每個鍵下的值進行計算,並傳回array <br>//不是太明白,實例看手冊 <br>echo '<br><hr><br>'; <br>//----------------------------------- ---------- <br>//array_replace($array, $parArr,...) <br>//用參數數組裡鍵的值替換$array里相同鍵的值 <br>//如果$array陣列裡在後邊的參數數組裡沒有找到對應的鍵,那麼加到新數組後邊 <br>/*$arr = getArr(4, 10); <br>$arr2 = getArr(6, 15); <br>printr($arr) ; <br>printr($arr2);*/ <br>$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "raspberry"), ); <br>$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry')); <br>printr(array_replace($base, $replacements)); <br>echo '<br><hr><br>'; <br>//---------------------------------------- ----- <br>//array_replace_recursive() 遞迴替換 <br>//功能同array_replace()相同。差異在於:array_replace_recursive()可以對多維數組操作,並且不改變$array的結構,而array_replace()他最終會回傳一個一維數組 <br>$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "raspberry"), ); <br>$replacements = array('citrus' => array('pineapple '), 'berries' => array('blueberry')); <br>printr(array_replace_recursive($base, $replacements)); <br>echo '<br><hr><br>'; <br>//----- ---------------------------------------------- <br>//array_reverse($ arr) <br>//將陣列裡的鍵依相反順序排列 <br>echo '<br><hr><br>'; <br>//---------------- ----------------------------- <br>//array_search($value, $array) <br>//在$array陣列中去找值為$value的鍵名 <br>//沒有找到則回傳false <br>//如果$array數組鴻有多個$value,那麼只傳回第一個符合的鍵 <br>//該函數與array_keys()類似,區別在於回傳值上:array_search()只會回傳一個符合的鍵名,而array_keys()則可以傳回一個由所有符合的鍵組成的一維數組 <br>echo '<br><hr><br> '; <br>//--------------------------------------------- <br>//array_shift($arr) <br>//去掉目前$arr數組裡的第一個鍵,並且將後邊的數字索引重新編排(但不改變原有順序),非數字索引不變。 <br>//函數與array_pop()類似,差別在於array_pop()去掉是最後一個,array_shift()去掉腦袋 <br>echo '<br><hr><br>'; <br>//---- ----------------------------------------- <br>//array_slice($arr, $ offset, $length=0, false) 數組截取 <br>//返回目前$arr數組裡從$offset處開始偏移,共$length個元素/鍵,並組成一個新數組返回 <br>//如果$offset或$ length為負數,那麼就是向相反方向進行偏移 <br>//感覺和substring()字符串截取類似 <br>//直接用php手冊上的實例了 <br>$input = array("a", "b", " c", "d", "e"); <br>$output = array_slice($input, 2); // returns "c", "d", and "e" <br>$output = array_slice($input, -2 , 1); // returns "d" <br>$output = array_slice($input, 0, 3); // returns "a", "b", and "c" <br>// note the differences in the array keys <br> printr(array_slice($input, 2, -1)); <br>printr(array_slice($input, 2, -1, true)); <br>echo '<br><hr><br>'; <br>/ /--------------------------------------------------------- <br>//array_spslice ($arr, $offset, $length) <br>//同array_slice()函數正好相反,函數是去掉位於$offset和$length之間這些元素 <br>unset($arr); <br>echo '<br><br>'; <br>//-------------------------------------- ------- <br>//array_sum($arr) <br>//將$arr數組裡的所有值進行求和累加,如果是非數值類型的則嘗試進行轉換,但是大部分轉換後為0 <br>/ /此函數只會影響一層數組,且array_product()類似 <br>$arr = array( <br>45,56, 'a', 'b'=>getArr(1, 2), <br>); <br>printr($$ arr); <br>echo 'array_sum($arr)',array_sum($arr); <br>echo '<br><hr><br>'; <br>//----------- ---------------------------------- <br>//array_values($arr) <br>//將$arr數組裡的值被提取出來,組成新的陣列 <br>$arr = array( <br>'k1'=>45,'k2'=>56, 'k3'=>'a', 'b'=>getArr(1, 2) , <br>); <br>printr(array_values($arr)); <br>echo '<br><hr><br>'; <br>//---------------- ----------------------------- <br>//array_unique($arr) 對陣列進行排重 <br>//對$arr數組進行排重,將重複的值進行過濾。多個相同的值將只保留第一個 <br>echo '<br><hr><br>'; <br>//------------------- -------------------------- <br>//array_walk($arr, callback[回呼函數], $sel_perfix='') <br>//對目前數組下的每個鍵進送到callback函數裡進行處理 <br>//如果加上$sel_perfix參數,回呼函數也要三個參數來接收,否則報錯 <br>//該函數只影響一層 <br>$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); <br>function test_alter(&$item1, $key, $prefix) <br>{ <br>$item1 = "$prefix: $item1"; <br>} <br>printr(array_walk($fruits, 'test_print')); test_alter', 'fruit'); <br>echo '<br><hr><br>'; <br>//---------------------- ----------------------- <br>//array_walk_recursive() <br>//功能類似array_alk();但他會遞歸$arr的每一層數組,傳回的陣列不會改變原有陣列的結構 <br>echo '<br><hr><br>'; <br>//----------------- ---------------------------- <br>//arsort($arr) <br>//依照陣列鍵名排序數組,可以對字母進行排序。如果排序失敗,將回傳null <br>echo '<br><hr><br>'; <br>//----------------------- ---------------------- <br>//asort() <br>//功能類似arsort(),差異在於:asort()是對數值進行排序 <br>  以上就是php array的學習筆記的內容,更多相關文章請關注PHP中文網(www.php.cn)! <p><br></p><p><br></p>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板