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 ;
}
傳遞 鍵值 操作;不會修改原鍵值;
實(shí)例:
$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ù)組;
實(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ù)組,
實(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;
}
操作鍵名和鍵值;
實(shí)例:
$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;
}
實(shí)例:
$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 賦值的順序從左到右;
實(shí)例:
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ù)組中指定部分,跳過不需要的部分;
實(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;
實(shí)例:
$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ù)組捕獲鍵值;
實(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.itdecent.cn/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)出所有鍵名為變量名,同時覆蓋原有的變量;
實(shí)例:
$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)出所有的鍵名為變量名,同已有變量名相沖突的是否,保留原有的變量;
實(shí)例:
$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)出所有的鍵名為變量名,如果同已有變量相沖突,在沖突的鍵名前增加前綴,為新的變量;
實(shí)例:
$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)出所有的鍵名為變量名,同時在所有的鍵名前增加前綴;
如果還有同名的變量名,那么覆蓋原有的;
實(shí)例:
$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)出所有的鍵名為變量名,同時在非法的變量名前增加前綴;
如果有相同的變量名,那么覆蓋;
實(shí)例:
$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)存在相同變量名的鍵名,同時覆蓋原有的;
沒有同名變量的鍵名,不需要處理;
實(shí)例:
$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ù)的,那么覆蓋原有的;
實(shí)例:
$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)出的變量是鍵值的引用,會隨鍵值的變化而變化;
覆蓋同名的變量;
實(shí)例:
$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ù)計(jì)算;
返回一個由函數(shù)返回值構(gòu)成的數(shù)組;
當(dāng)遍歷一個數(shù)組的時候,返回?cái)?shù)組的鍵名是原數(shù)組;當(dāng)同時遍歷多個數(shù)組的時候,返回?cái)?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ù)組長度不同,那么用空值補(bǔ)充長度不夠的數(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ù)組鍵名;
實(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ù)組;
實(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ù)組;
實(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 默認(rèn)是NULL;由于這個函數(shù)的返回值是boolean 因此主要用來改變原數(shù)組的鍵值使用的,所以第一個參數(shù)常常是傳遞 鍵值引用;
mixed $usedate 傳遞給自定義函數(shù)的第三個參數(shù);
備注:
array_walk() 和 foreach() 都是遍歷數(shù)組,
而且都不能夠返回一個具有實(shí)際操作意義的值,所以常常都使用鍵值的引用,都主要用于原數(shù)組的修改;
array_walk() 還有能夠檢查成功與否的 boolean 返回,而foreach() 什么都沒有;
foreach() 不僅能夠遍歷數(shù)組,還能夠遍歷對象;
語法結(jié)構(gòu)1:
boolean array_walk(array $array ,callback $callback);
實(shí)例:
$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);
實(shí)例:
$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ù)組的鍵值,因?yàn)閍rray_walk_recursive 沒有實(shí)際意義的返回值,所以一般傳遞鍵值的引用,改變原數(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ù)組;
實(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ù)組;
實(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;
}
實(shí)例:
$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;
}
實(shí)例:
$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);
實(shí)例:
$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()
隨機(jī)返回鍵名;
基礎(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)
隨機(jī)返回?cái)?shù)組鍵名字符串;
實(shí)例:
$a_bill_info = array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
echo array_rand($a_bill_info);
#output : 數(shù)組中任意一個隨機(jī)鍵名;
語法結(jié)構(gòu)2:
array array_rand(array $array , int $number);
返回一個由隨機(jī)鍵名組成的數(shù)組;
如果 int $number >= 數(shù)組的長度,返回整個數(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 被用來計(jì)算的數(shù)組;
callback $callback 自定義函數(shù);
-mixed callback(mixed $carry ,mixed $item)
-carry 上次迭代的結(jié)果,如果是第一次迭代 則是 initial ;
-item 這次迭代的值;
mixed $initial 傳遞給第一次迭代的自定義函數(shù)的第一個參數(shù),或當(dāng)?shù)臄?shù)組為空的時候,作為返回值;
-注意初始值默認(rèn)是 NULL;
語法結(jié)構(gòu)1:
mixed array_reduce(array $array ,callback $callback );
初始值是NULL 的迭代;
實(shí)例:
$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ù)的迭代計(jì)算;
實(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ù)默認(rèn)是NULL 在數(shù)字計(jì)算的時候會轉(zhuǎn)化成0;
array_product()
計(jì)算數(shù)組中所有鍵值的乘積;返回這個乘積;
專門用于數(shù)字運(yùn)算;
被操作數(shù)組為空的時候,返回1;
基礎(chǔ)語法:
number array_product(array $array);
number 返回 整數(shù) or 浮點(diǎn)數(shù);
array $array 被遍歷的數(shù)組;
實(shí)例:
echo array_product(range(1,10));
#output: 3628800
備注:
被操作數(shù)組為空的時候,返回1;
array_sum() 被操作數(shù)組為空的時候,返回0;
array_sum()
返回?cái)?shù)組中所有鍵值的總和;
主要用作數(shù)字;
被操作數(shù)組為空的時候,返回0;
基礎(chǔ)語法:
number array_sum(array $array);
number 返回整數(shù) or 浮點(diǎn)數(shù);
array $array 被操作的數(shù)組;
實(shí)例:
echo array_sum(range(1,10));
#output: 55;
備注:
被操作數(shù)組為空的時候返回0;
array_product() 數(shù)組為空的時候返回1;