foreach() | list() | extract | array_map() | array_walk() | array_walk_recursive | array_filter() | array_rand() | array_product | array_sum | array_reduce |
foreach() 遍歷數(shù)組傳遞鍵名和鍵值操作睡毒,鍵值能夠做引用傳遞修改来惧;
list() 遍歷數(shù)組,把數(shù)組的值賦值給變量演顾;不能引用產(chǎn)地供搀,不會修改原數(shù)組隅居,返回原數(shù)組;
foreach()
遍歷數(shù)組的鍵名和鍵值操作葛虐;沒有返回值胎源;
語法結(jié)構(gòu)匯總:
fearch(array $array as $val){} 操作鍵值;不會修改原數(shù)組屿脐;
fearch(array $array as &$val){} 引用變量 操作數(shù)組的鍵值涕蚤,能夠修改鍵值
fearch(array $array as $key => $val){} 操作數(shù)組的鍵值和鍵名;不會修改原數(shù)組摄悯;
fearch(array $multi_array as list($a....) ){} 操作多維數(shù)組橄仍,而且第二層次的數(shù)組必須是索引數(shù)組;
fearch(array $multi_array as $key => list($a....)){} 操作多維數(shù)組霹肝,叉袍,而且第二層次的數(shù)組必須是索引數(shù)組;
語法結(jié)構(gòu)1:
foreach(array $array as $val){
$val ;
}
傳遞 鍵值 操作瘪阁;不會修改原鍵值撒遣;
實例:
$a_name = ['bill','tom','jack']
foreach($a_name as $val){
echo $val.' ';
}
output : bill tom jack;
語法結(jié)構(gòu)2:
foreach($array as &$val){
$val
}
傳遞 引用傳遞;操作會修改原數(shù)組管跺;
實例:
$a_age = ['bill_age'=>33,'tom_age'=>20,'jack_age'=>40];
foreach($a_name as &$val){
$val +=10;
}
修改后 $a_age = ['bill_age'=>43,'tom_age'=>30,'jack_age'=>50];
結(jié)構(gòu)語法3:
foreach($array as list($a....)){
$a
}
搭配 list() 直接操作二維數(shù)組义黎,
實例:
$a_persional_info = array(
'bill'=>array('bill','gates',30),
'thomas=>array('thomas','jefferson',40)
)
foreach($a_personal_info as list($str_first_name,$str_last_name,$int_age)){
echo $str_first_name.' . '.$str_last_name.' is '.$int_age.' years old ! <br/>';
}
output : bill.gates is 30 years old!
thomas.jefferson is 40 years old!
結(jié)構(gòu)語法4:
foreach($array as $key => $val){
$key ;
$val;
}
操作鍵名和鍵值;
實例:
$a_personal_info = array('name'=>'bill','job'=>'worker','age'=>33)
foreach($a_personal_info as $key => $val){
echo $key.'=>'.$val.'<br/>';
}
output : name => bill
job => worker
age => 33
結(jié)構(gòu)語法5:
foreach($array as $key => list($a..)){
$key;
$a;
}
實例:
$a_persional_info = array(
'bill'=>array('bill','gates',30),
'thomas=>array('thomas','jefferson',40)
)
foreach($a_personal_info as $key => list($str_f_name,$str_l_name,$int_age)){
echo $key.' 的年紀(jì)是'. $int_age.' 歲!';
}
output : bill 的年紀(jì)是30歲豁跑!
thomas的年紀(jì)是40歲廉涕!
list()
把索引數(shù)組的鍵值賦值給變量;
返回原數(shù)組艇拍;
語法結(jié)構(gòu)1:
list(mixed $name_1,......) = array $array;
把 索引數(shù)組 里面的鍵值狐蜕,賦值給變量;
PHP 7 賦值的順序從左到右卸夕;
實例:
list($name,$age,$job) = array('bill',33,'worker');
echo $name => bill
$age => 33
$job => worker
語法結(jié)構(gòu)2:
list(mixed $name_1, , mixed $name_2) = array $array;
只獲取數(shù)組中指定部分层释,跳過不需要的部分;
實例:
list($name , ,$job) = array('bill',33,'worker');
echo $name.' is '.$job;
output : bill is worker
語法結(jié)構(gòu)3:嵌套使用
list($a,$b..list($aa,$bb...)) = array $array;
實例:
$a_brand_name = array('吉利','奇瑞',array('BMW','VOLVO'));
list($str_c_brand_name_1,$str_c_brand_name_2,list($str_g_brand_name_1,$str_g_brand_name_2)) = $a_brand_name;
echo $str_g_brand_name_1
output : BMW
語法結(jié)構(gòu)4:
list($a[0],$a[1]....) = array $array;
用數(shù)組捕獲鍵值快集;
實例:
$a_brand_name = array('吉利','奇瑞',array('BMW','VOLVO'));
list($a_car_brand[0],$a_car_brand[1],list($a_car_brand[2],$a_car_brand[3])) =$a_brand_name;
print_r($a_car_brand);
output : Array ( [0] => 吉利 [1] => 奇瑞 [2] => BMW [3] => VOLVO )
extract()
把關(guān)聯(lián)數(shù)組的元素導(dǎo)入<a href='http://www.reibang.com/p/46f91cd5f67a'>當(dāng)前符號列表</a>中贡羔;
把鍵名當(dāng)做變量標(biāo)識符,鍵值賦值給變量个初;
如果鍵名當(dāng)做變量標(biāo)識符是一個非法的標(biāo)識符乖寒,那么不會被導(dǎo)出;
基礎(chǔ)語法:
int extract(array $array [,constant $flags = EXTRACT_OVERWRIT [,string $prefix]]);
-array $array 被操作的的數(shù)組院溺;
-constant $flags 常數(shù)楣嘁,決定鍵名的轉(zhuǎn)化成變量的方式;
-EXTR_OVERWRIT 覆蓋已有變量;
-EXTR_SKIP 保留已有變量马澈;
-EXTR_PREFIX_SAME 如已有同名變量瓢省,在同名變量前增加前綴;
-EXTR_PREFIX_ALL 在所有的鍵名前增加前綴痊班;
-EXTR_PREFIX_INVALID 在非法鍵名前增加前綴勤婚;
-EXTR_IF_EXISTS 導(dǎo)出具有相同變量名的鍵名,同時覆蓋原有的涤伐;其他的不處理馒胆;
-EXTR_PREFIX_IF_EXISTS 導(dǎo)出具有變量的鍵名,同時在鍵名前增加前綴凝果,成為一個新的變量祝迂;
-EXTR_REFS 導(dǎo)出的變量是數(shù)組鍵值的引用,隨數(shù)組的改變而改變器净;同時會覆蓋原有變量型雳;
-string $prefix 添加前綴的字符串;
備注:
在增加的前綴同鍵名之間用 _ 下劃線連接山害;
語法結(jié)構(gòu)1:
int extract(array $array )
導(dǎo)出所有鍵名為變量名纠俭,同時覆蓋原有的變量;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill');
extract($a_bill_info);
echo $name;
#output : bill;
語法結(jié)構(gòu)2:
int extract(array $array ,EXTR_SKIP)
導(dǎo)出所有的鍵名為變量名浪慌,同已有變量名相沖突的是否冤荆,保留原有的變量;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill');
extract($a_bill_info,EXTR_SKIP);
echo $name;
#output : old_name;
語法結(jié)構(gòu)3:
int extract(array $array ,EXTR_PREFIX_SAME权纤, string $prefix)
導(dǎo)出所有的鍵名為變量名钓简,如果同已有變量相沖突,在沖突的鍵名前增加前綴汹想,為新的變量外邓;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill');
extract($a_bill_info,EXTR_PREFIX_SAME,'bill');
echo $bill_name;
#output : bill;
語法結(jié)構(gòu)4:
int extract(array $array ,EXTR_PREFIX_ALL ,string $prefix)
導(dǎo)出所有的鍵名為變量名,同時在所有的鍵名前增加前綴欧宜;
如果還有同名的變量名坐榆,那么覆蓋原有的拴魄;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill','age'=>20);
extract($a_bill_info, EXTR_PREFIX_ALL,'bill');
echo $name.'<br/>'.$bill_name.'<br/>'.$bill_age;
語法結(jié)構(gòu)5:
int extract(array $array ,EXTR_PREFIX_INVALID,string $prefix);
導(dǎo)出所有的鍵名為變量名冗茸,同時在非法的變量名前增加前綴;
如果有相同的變量名匹中,那么覆蓋夏漱;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_PREFIX_INVALID,'bill');
echo $name. ' '.$bill_1_age;
#output : bill 20;
語法結(jié)構(gòu)6:
int extract(array $array ,EXTR_IF_EXISTS)
導(dǎo)出已經(jīng)存在相同變量名的鍵名,同時覆蓋原有的顶捷;
沒有同名變量的鍵名挂绰,不需要處理;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_IF_EXISTS);
echo $name ;
#output : bill;
語法結(jié)構(gòu)7:
int extract(array $array ,EXTR_PREFIX_IF_EXISTS ,string $prefix);
只導(dǎo)出已經(jīng)存在相同變量名的鍵名,同時在鍵名前增加前綴葵蒂,變成新的變量交播;
如果還是有重復(fù)的,那么覆蓋原有的践付;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_PREFIX_IF_EXISTS,'bill');
echo $bill_name.' '.$name;
#output : bill old_name;
語法結(jié)構(gòu)8:
int extract(array $array ,EXTR_REFS);
導(dǎo)出的變量是鍵值的引用秦士,會隨鍵值的變化而變化;
覆蓋同名的變量永高;
實例:
$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_REFS,'bill');
echo $name;
#output : bill;
$a_bill_info['name'] = tom;
echo $name;
#output : tom;
array_map()
遍歷一個或多個數(shù)組隧土,把數(shù)組的鍵值傳遞給回調(diào)函數(shù)計算;
返回一個由函數(shù)返回值構(gòu)成的數(shù)組命爬;
當(dāng)遍歷一個數(shù)組的時候曹傀,返回數(shù)組的鍵名是原數(shù)組;當(dāng)同時遍歷多個數(shù)組的時候饲宛,返回數(shù)組的鍵名是從0開始的索引值皆愉;
基礎(chǔ)語法:
array array_map(callback $callback ,array $array_1 [array $array_2......]);
callback $callback 回調(diào)函數(shù),函數(shù)的第一個參數(shù)接受第一個數(shù)組傳遞過來的鍵值艇抠,函數(shù)的第二個參數(shù)接受第二個數(shù)組傳遞過來的鍵值亥啦。依次往后;
-如果傳遞的回調(diào)函數(shù)是NULL 的話练链,那么會把數(shù)組傳遞給函數(shù)的值直接返回翔脱,如果是多個數(shù)組傳遞給函數(shù)的話,那么會把多個參數(shù)組合成一個子數(shù)組返回媒鼓;
-不可以傳遞引用參數(shù)届吁;不能夠修改原數(shù)組的鍵值;
-如果同時遍歷的多個數(shù)組長度不同绿鸣,那么用空值補充長度不夠的數(shù)組疚沐;
array $array_1 需要被遍歷的數(shù)組;
語法結(jié)構(gòu)1:
array array_map(callback $callback ,array $array);
遍歷數(shù)組的鍵值潮模,傳遞給回調(diào)函數(shù)亮蛔;
返回有回調(diào)函數(shù)的返回值構(gòu)成的關(guān)聯(lián)數(shù)組;
關(guān)聯(lián)數(shù)組的鍵名 == 原數(shù)組鍵名擎厢;
實例:
$a_bill_info = array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
function add_prefix($v){
return 'prefix_'.$v;
}
print_r(array_map('add_prefix',$a_bill_info));
#output : Array ( [first_name] => prefix_bill [last_name] => prefix_bill_ln [age] => prefix_22 [job] => prefix_worker )
語法結(jié)構(gòu)2:
array_map(callback $callback , array $array_1, array $array_2);
同時遍歷多個數(shù)組元素究流;
返回一個索引數(shù)組;
實例:
$a_bill_info = array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
$a_tom_info = array('first_name'=>'tom','last_name'=>'tom_ln','age'=>32,'job'=>'worker');
function connect($a,$b){
return $a.$b;
}
print_r(array_map('connect',$a_bill_info,$a_tom_info));
#output : Array ( [0] => billtom [1] => bill_lntom_ln [2] => 2232 [3] => workerworker );
語法結(jié)構(gòu)3:
array_map(NULL,array $array_1 ,array $array_2)
如果回調(diào)函數(shù)是 NULL 返回一個多維數(shù)組动遭;
實例:
$a_bill_info = array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
$a_tom_info = array('first_name'=>'tom','last_name'=>'tom_ln','age'=>32,'job'=>'worker');
$a_jack_info = array('first_name'=>'jack','last_name'=>'jack_ln','age'=>27);
print_r(array_map(NULL ,$a_bill_info,$a_tom_info,$a_jack_info));
#output :
#Array (
# [0] => Array ( [0] => bill [1] => tom [2] => jack )
# [1] => Array ( [0] => bill_ln [1] => tom_ln [2] => jack_ln )
# [2] => Array ( [0] => 22 [1] => 32 [2] => 27 )
# [3] => Array ( [0] => worker [1] => worker [2] => )
# )
#備注:
#注意返回的多維數(shù)組中最后一位是空值芬探;
array_walk()
遍歷數(shù)組,修改原數(shù)組的鍵值厘惦;所以常常傳遞 鍵值引用 給自定義函數(shù)偷仿;
遍歷一個數(shù)組,把數(shù)組的鍵值,鍵名依次傳遞給自定義回調(diào)函數(shù)酝静;
如果函數(shù)有第三個參數(shù)节榜,那么這個參數(shù)作為自定義函數(shù)的第三個參數(shù),傳遞給自定義函數(shù)别智;
成功返回 true 失敗 返回 false;
基礎(chǔ)語法:
boolean array_walk(array $array , callback $callback [,mixed $usedate = NLL]);
boolean 返回值全跨;
array $array 需要被遍歷的數(shù)組;
callback $callback 自定義回調(diào)函數(shù)亿遂;
-自定義回調(diào)函數(shù)的第一參數(shù)是鍵值浓若,第二個參數(shù)是鍵名,第三個參數(shù)是 $usedate 默認是NULL蛇数;由于這個函數(shù)的返回值是boolean 因此主要用來改變原數(shù)組的鍵值使用的挪钓,所以第一個參數(shù)常常是傳遞 鍵值引用;
mixed $usedate 傳遞給自定義函數(shù)的第三個參數(shù)耳舅;
備注:
array_walk() 和 foreach() 都是遍歷數(shù)組碌上,
而且都不能夠返回一個具有實際操作意義的值,所以常常都使用鍵值的引用浦徊,都主要用于原數(shù)組的修改馏予;
array_walk() 還有能夠檢查成功與否的 boolean 返回,而foreach() 什么都沒有盔性;
foreach() 不僅能夠遍歷數(shù)組霞丧,還能夠遍歷對象;
語法結(jié)構(gòu)1:
boolean array_walk(array $array ,callback $callback);
實例:
$a_salary = ['bill'=>2000,'tom'=>1800,'jack'=>2750];
function increase(&$v){
$v *=1.08;
}
array_walk($a_salary,'increase');
print_r($a_salary);
#output : Array ( [bill] => 2160 [tom] => 1944 [jack] => 2970 );
語法結(jié)構(gòu)2:
boolean array_walk(array $array ,callback $callback ,mixed $usedate);
實例:
$a_salary = ['bill'=>2000,'tom'=>1800,'jack'=>2750];
$float_ratio = 1.08;
function increase(&$v,$k,$ratio){
$v *= $ratio;
}
array_walk($a_salary,'increase',$float_ratio);
print_r($a_salary);
$output: Array ( [bill] => 2160 [tom] => 1944 [jack] => 2970 );
#備注:
#函數(shù) increase 必須是三個形參冕香;不能缺少 $k,即使我們不需要蛹尝;
array_walk_recursive()
遞歸遍歷數(shù)組,把數(shù)組的鍵值傳遞給自定義函數(shù),
除了遞歸遍歷外悉尾,其他方面同 array_walk 相同突那;
基礎(chǔ)語法:
boolean array_walk_recursive(array $array , callback $callback [,mixed $usedate = NULL]);
boolean 返回值,成功返回 true 失敗返回 false;
array $array 需要被遍歷的函數(shù)构眯;
callback $callback 自定義回調(diào)函數(shù)愕难,
-自定義函數(shù)的第一個參數(shù)是數(shù)組的鍵值,因為array_walk_recursive 沒有實際意義的返回值惫霸,所以一般傳遞鍵值的引用猫缭,改變原數(shù)組;
-自定義函數(shù)的第二個參數(shù)是它褪,鍵名饵骨;
-自定義函數(shù)的額第三個參數(shù)是 翘悉,mixed $usedate 的值茫打;
mixed $usedate 傳遞給自定義函數(shù)的第三個值;
語法結(jié)構(gòu)1:
boolean array_walk_recursive(array $array , callback $callback);
function callback(&$v,$k){
$v,$k;
}
不帶多余參數(shù)的遍歷數(shù)組;
實例:
$a_personal_info = array(
'bill' => array(
'first_name' => 'bill_fn',
'last_name' => 'bill_ln',
'age' => 55,
'other' => array('a','b','c')
),
'tom' => array(
'first_name' => 'tom_fn',
'last_name' => 'tom_ln',
'age' => 30,
'other' => array('a','b','c')
),
'jack' => array(
'first_name' => 'jack_fn',
'last_name' => 'jack_ln',
'age' => 20,
'other' => array('a','b','c')
)
);
function change_age(&$v,$k){
if($k == 'age'){
$v += 10;
}
}
if(array_walk_recursive ($a_personal_info, 'change_age')){
print_r($a_personal_info);
}
#output :
#Array (
#[bill] => Array ( [first_name] => bill_fn [last_name] => bill_ln [age] => 65 [other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[tom] => Array ( [first_name] => tom_fn [last_name] => tom_ln [age] => 40 [other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[jack] => Array ( [last_name] => jack_ln [age] => 30 [other] => Array ( [0] => 10 [1] => b [2] => c ) ) )
語法結(jié)構(gòu)2:
boolean array_walk_recursive(array $array , callback $callback , mixed $usedate);
function callback(&$v,$k,$date){
$v,$k,$date;
}
帶額外參數(shù)的遍歷數(shù)組老赤;
實例:
$a_personal_info = array(
'bill' => array(
'first_name' => 'bill_fn',
'last_name' => 'bill_ln',
'age' => 55,
'other' => array('a','b','c')
),
'tom' => array(
'first_name' => 'tom_fn',
'last_name' => 'tom_ln',
'age' => 30,
'other' => array('a','b','c')
),
'jack' => array(
'first_name' => 'jack_fn',
'last_name' => 'jack_ln',
'age' => 20,
'other' => array('a','b','c')
)
);
function change_age(&$v,$k,$date){
if($k == 'age'){
$v += $date;
}
}
if(array_walk_recursive($a_personal_info,'change_age',1)){
print_r($a_personal_info);
}
#output:
#Array (
#[bill] => Array ( [first_name] => bill_fn [last_name] => bill_ln [age] => 56 [other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[tom] => Array ( [first_name] => tom_fn [last_name] => tom_ln [age] => 31[other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[jack] => Array ( [last_name] => jack_ln [age] => 21 [other] => Array ( [0] => 10 [1] => b [2] => c ) ) )
array_filter()
用自定義函數(shù)過濾數(shù)組轮洋;
返回一個有自定義函數(shù)返回true 的數(shù)組元素構(gòu)成的數(shù)組;
不會改變原有數(shù)組元素抬旺;
基礎(chǔ)語法:
array array_filter(array $array ,callback $callback [constant $flags = NULL]);
array 返回的數(shù)組弊予;
array $array 被過濾的原始數(shù)組;
callback $callback 自定義函數(shù)开财;
constant $flags 決定傳遞給自定義函數(shù)的參數(shù)汉柒;
ARRAY_FILTER_USE_KEY 傳遞鍵名;
ARRAY_FILTER_USE_BOTH 傳遞鍵值和鍵名责鳍,第一個參數(shù)是鍵值碾褂,第二個參數(shù)是鍵名;
忽略沒有這個參數(shù)历葛,傳遞鍵值正塌;
語法結(jié)構(gòu)1:
array array_filter(array $array ,callback $callback);
function callback ($v){
$v;
}
實例:
$a_int = range(1,10);
function get_even($v){
if($v%2 == 0){
return true;
}
}
print_r(array_filter($a_int,'get_even'));
#output : Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 [9] => 10 );
語法結(jié)構(gòu)2:
array array_filter(array $array ,callback $callback ,ARRAY_FILTER_USE_KEY);
function callback($k){
$k;
}
實例:
$a_personal_info = array(
'王軍' => array(
'first_name' => '軍',
'last_name' => '王',
'age' => 55,
),
'王丹' => array(
'first_name' => '丹',
'last_name' => '王',
'age' => 30,
),
'李明' => array(
'first_name' => '明',
'last_name' => '李',
'age' => 20,
)
);
function get_people_wangs($k){
if(mb_substr($k,0,1,'utf-8') == '王'){
return true;
}
}
print_r(array_filter($a_personal_info,'get_people_wangs',ARRAY_FILTER_USE_KEY));
#output:
#Array (
#[王軍] => Array ( [first_name] => 軍 [last_name] => 王 [age] => 55 )
#[王丹] => Array ( [first_name] => 丹 [last_name] => 王 [age] => 30 )
# )
語法結(jié)構(gòu)3:
array array_filter(array $array ,callback $callback ,ARRAY_FILTER_USE_BOTH);
實例:
$a_personal_info = array(
'王軍' => array(
'first_name' => '軍',
'last_name' => '王',
'age' => 55,
),
'王軍' => array(
'first_name' => '軍',
'last_name' => '王',
'age' => 30,
),
'李明' => array(
'first_name' => '明',
'last_name' => '李',
'age' => 20,
)
);
function get_people($v,$k){
if(mb_substr($k,0,1,'UTF-8') == '王' && $v['age'] == 30){
return true;
}
}
print_r(array_filter($a_personal_info,'get_people',ARRAY_FILTER_USE_BOTH));
#output : Array ( [王軍] => Array ( [first_name] => 軍 [last_name] => 王 [age] => 30 ) );
array_rand()
隨機返回鍵名;
基礎(chǔ)語法:
mixed array_rand(array $array [int $number = 1]);
mixed 返回一個鍵名字符串或 多個鍵名組成的數(shù)組恤溶;
array $array 被操作的數(shù)組乓诽;
int $number 指定返回的鍵名的個數(shù);
備注:
如果 int $number >= 數(shù)組的長度咒程,那么返回整個鍵名構(gòu)成的索引數(shù)組鸠天,而且排列的順序同原數(shù)組;
php 獲取數(shù)組鍵名的函數(shù)
語法結(jié)構(gòu)1:
string array_rand(array $array)
隨機返回數(shù)組鍵名字符串帐姻;
實例:
$a_bill_info = array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
echo array_rand($a_bill_info);
#output : 數(shù)組中任意一個隨機鍵名粮宛;
語法結(jié)構(gòu)2:
array array_rand(array $array , int $number);
返回一個由隨機鍵名組成的數(shù)組;
如果 int $number >= 數(shù)組的長度卖宠,返回整個數(shù)組的鍵名巍杈,同時順序同原數(shù)組;
實例:
$a_bill_info = array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
print_r(array_rand($a_bill_info,2));
print_r(array_rand($a_bill_info,count($a_bill_info)));
#output:
#Array ( [0] => first_name [1] => job )
#Array ( [0] => first_name [1] => last_name [2] => age [3] => job )
array_reduce()
遍歷數(shù)組扛伍,迭代的把數(shù)組簡化成一個值返回筷畦;
基礎(chǔ)語法:
mixed array_reduce(array $array ,callback $callback [, mixed $initial = NULL]);
mixed 返回值;
array $array 被用來計算的數(shù)組刺洒;
callback $callback 自定義函數(shù)鳖宾;
-mixed callback(mixed $carry ,mixed $item)
-carry 上次迭代的結(jié)果,如果是第一次迭代 則是 initial ;
-item 這次迭代的值逆航;
mixed $initial 傳遞給第一次迭代的自定義函數(shù)的第一個參數(shù)鼎文,或當(dāng)?shù)臄?shù)組為空的時候,作為返回值因俐;
-注意初始值默認是 NULL;
語法結(jié)構(gòu)1:
mixed array_reduce(array $array ,callback $callback );
初始值是NULL 的迭代拇惋;
實例:
$a_int = range(1,10);
function sum($carry,$item){
return $carry += $item;
}
echo (array_reduce($a_int,'sum'));
#output : 55;
語法結(jié)構(gòu)2:
mixed array_reduce(array $array ,callback $callback, mixed $initial);
有額外參數(shù)的迭代計算周偎;
實例:
$a_int = range(1,10);
$a_empty = array();
function product($carry,$item){
return $carray *= $item;
}
print_r(array_reduce($a_int,'product',1));
print_r(array_reduce($a_int,'product',1));
#output :
# 3628800;
# 1;
備注:
array_reduce() 的第三個參數(shù)默認是NULL 在數(shù)字計算的時候會轉(zhuǎn)化成0;
array_product()
計算數(shù)組中所有鍵值的乘積撑帖;返回這個乘積蓉坎;
專門用于數(shù)字運算;
被操作數(shù)組為空的時候胡嘿,返回1蛉艾;
基礎(chǔ)語法:
number array_product(array $array);
number 返回 整數(shù) or 浮點數(shù);
array $array 被遍歷的數(shù)組衷敌;
實例:
echo array_product(range(1,10));
#output: 3628800
備注:
被操作數(shù)組為空的時候勿侯,返回1;
array_sum() 被操作數(shù)組為空的時候缴罗,返回0罐监;
array_sum()
返回數(shù)組中所有鍵值的總和;
主要用作數(shù)字瞒爬;
被操作數(shù)組為空的時候弓柱,返回0;
基礎(chǔ)語法:
number array_sum(array $array);
number 返回整數(shù) or 浮點數(shù)侧但;
array $array 被操作的數(shù)組矢空;
實例:
echo array_sum(range(1,10));
#output: 55;
備注:
被操作數(shù)組為空的時候返回0;
array_product() 數(shù)組為空的時候返回1禀横;