php中的常用数组函数,array的上学笔记

array_diff_assoc($arr1, $arr2, $arr3,… n);

再次回到:一个$arr1的副本,后续的数组中冒出一个键值相同的因素,就在副本中删掉那么些元素,最终回到那么些副本。

如:$arr1中有元素 [‘k1’ => ‘v1’],$arr2~n中并发了扳平的同键名同键值的
‘k1’=>’v1’就不回来这一个因素了。


array_diff_assoc($arr1, $arr2, $arr3,… n);

重临:一个$arr1的副本,后续的数组中出现一个键值相同的因素,就在副本中删掉那么些因素,最终回来那一个副本。

如:$arr1中有元素 [‘k1’ => ‘v1’],$arr2~n中并发了一致的同键名同键值的
‘k1’=>’v1’就不回来这些元素了。


技能不精,要有不当,还请提议,我会核查。

技能不精,要有不当,还请提出,我会校订。

array_diff(同上)

重临:一个$arr1的副本,后续的数组中出现一个值相同的要素,就在副本中删掉这几个元素,最后回到那些副本。


array_diff(同上)

归来:一个$arr1的副本,后续的数组中出现一个值相同的要素,就在副本中删掉那些元素,最终回到那个副本。


复制代码 代码如下:

复制代码 代码如下:

array_diff_key(同上)

 重返:一个$arr1的副本,后续的数组中出现一个键相同的元素,就在副本中删掉那个因素,最终回到这些副本。


array_diff_key(同上)

 重临:一个$arr1的副本,后续的数组中出现一个键相同的元素,就在副本中删掉那一个元素,最后回到这一个副本。


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数组陶冶
*/
//———————————————
//array_change_key_case()
改变数组索引的轻重写字母,由最终一个参数决定:CASE_UPPER(转化为题写),CASE_LOWER(默认转化为题写)
$expArr = array(
‘fiRsT’ => ‘1’,
‘sEcoNd’ => ‘2’,
‘ThIrd’ => array(
‘HuiMa’ => ‘3’,
‘nengZhuaNma’ => ‘5’,
)
);
printr(array_change_key_case($expArr));//全转速为题写
printr(array_change_key_case($expArr[‘ThIrd’],
CASE_UPPER));//全转速为大写 只对$expArr数组里的某个index键转化
//总计:该函数只影响数组的一层。 并且不会对原数组暴发潜移默化
echo ‘<br/><hr/><br/>’;
//———————————————
//array_chunk($array, $size, false)
//将一个数组分割成一个多维数组,size决定那些数组每$size个变成一个多维数组,
true/false决定新数组的键值是不是沿用原数组的键
$expArr = array(‘4′,’2′,’6′,’d’,’2′);
printr(array_chunk($expArr, 3));
//统计:该函数只影响数组的一层。 并且不会对原数组暴发震慑
echo ‘<br/><hr/><br/>’;
//———————————————
//array_combine($keyArr, $valArr)
//将四个数组组合成一个数组,$keyArr做为键,$valArr做为值
$expKey = array(‘g’, ‘d’, ‘t’);
$expVal = array(‘5’, ‘8’, ‘7’);
printr(array_combine($expKey, $expVal));
//该函数同样只影响数组的一层,并且重回一个新数组
echo ‘<br/><hr/><br/>’;
//———————————————
//array_count_values($array)
//计算$array数组中每个value出现的次数,并以他个value做为新数组的键,出现次数做为value
$array = array(‘v1’=>’265’, ‘v2’=>’352’, ‘v3’=>’265’,
‘v4’=>’349’, ‘v5’=>’265’);
printr(array_count_values($array));
//统计:该函数只可以用于总计值为
string和integer类型的value,其他类型会发warning!
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff($array1, $array2…)
//以$array1为底蕴数组,他的值不现身在其余任何参数数组里的值组成一个新数组
$arr1 = array(‘v4’=>458, ‘gren’, ‘b5’, ‘a5’);
$arr2 = array(‘v4’=>598, ‘red’, ‘a5’, ‘c4’);
printr(array_diff($arr1, $arr2));
//总括:拿一个数组到一堆数组中找出这些数组中绝非的值,计算、数据比较应该会用到
//array_intersect($array, $parArr, ….)
//该函数同array_diff在效劳上一致,只是array_intersect()重临的是共有的数据,array_diff则是只设有于$array中的数据
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_assoc($array1, $array2…)
//同 array_diff()函数,不过这些也会拿key进行自查自纠
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_key
//同array_diff()函数
//只是其一只拿$array1的key去与别的参数数组举行检索
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_uassoc($arr1, $parArr…., 回调函数)
//功能同array_diff(),但是急需用户定义一个回调函数
//未领会该函数的功能
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_ukey($arr1, $parArr…., 回调函数)
//功能同array_diff_key(),只不过和array_diff_uassoc一样,需求一个回调函数
//
//
echo ‘<br/><hr/><br/>’;
//———————————————
php中的常用数组函数,array的上学笔记。//array_fill($startInt, $numInt, $value)
//把$value填充到一个新数组,新数组的索引初步地方上马由$startInt决定,$numInt则决定这么些数组生成多少个目录。
//tip:除了$value,$startInt,$numInt必须为数字,否则报错
printr(array_fill(2, 5, ‘value’));
//计算:还没悟出干啥用
echo ‘<br/><hr/><br/>’;
//———————————————
//array_fill_keys($arrKeys, $value);
//功能同array_fill()函数。只不过那里用$arrKeys【一个数组的值】来做为新数组的键
$arrKeys = array(’45’, ‘d’, ‘b’, ‘c’);
printr(array_fill_keys($arrKeys, ‘value’));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_filter($arr, callBack回调函数)
//过滤函数,通过对$arr数组的值的判定,即使 callBack回调函数
再次来到true,则将近日键以及值添加到新的数组里
//TIP:回调函数可以写个规则,来过滤掉里边不符合规则的数组键
function cb($val)
{
return $val%2 == 0;
}
$array = array(‘k1’=>3, ‘k2’=>5,’k4’=>54654, ‘k5’=>8794,
8945, 32549564);
printr($array, ‘cb’);
//tip:回调函数名提议用引号引起来
//总计:该办法可以做成一个数量过滤的合龙
unset($array);
echo ‘<br/><hr/><br/>’;
//———————————————
//array_flip($array)
//将数组中key和value的关系转移。只帮衬string和integr类型的键,其他品种将会生出警告,并且有标题标键值不变换。在转变的新的数组,假设键相同,他会不停的交替掉现有键的值
$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)
//判断一个键是否存在于近期数组中,再次来到bool。也可用来判定目的
$array = array(‘cb’ => 234, ‘dv’=>45, ‘one’=>897);
if(array_key_exists(‘one’, $array))
echo ‘存在那个数组中’;
else
echo ‘不存在’;
echo ‘<br/><hr/><br/>’;
//———————————————
//array_keys($array, $selSearch_value)
//重返数组中的键名并结合一个新数组,假设指定了$selSearch_value值,那么将赶回数组里等于$selSearch_value的键名
$array = getArr(4, 10);
printr(array_keys($array));
printr(array_keys($array, ‘5’));//带值的检索
unset($array);
//总计:那个也可用来数据统计,数据相比验证
echo ‘<br/><hr/><br/>’;
//———————————————
echo ‘array_map:’;
//array_map(‘callBack’, $array,…)
//把传播的函数,再次来到经callback回调函数的再次回到值
//回调函数也得以回来一个数组。并且,回调函数只接受一个数组里的值传入
function mapCb($n)
{
return $n*$n*$n;
}
$array = getArr(4, 15);
printr(array_map(‘mapCb’, $array));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_merge($array,$array2…)
//将八个数组组成一个数组,并对数字索引进行重复编辑。
$arr1 = getArr(1, 5);
$arr2 = getArr(5, 10);
printr(array_merge($arr1, $arr2));
//计算:将五个数组组成一个新数组。
echo ‘<br/><hr/><br/>’;
//———————————————
//array_merge_recursive($arr1, $arr2….)
//成效同上。但函数会将键名相同的值组成一个新数组,而不是替换掉
//但要是要用,依据实况选用
echo ‘<br/><hr/><br/>’;
//———————————————
//array_multisort()
//多维数组排序,近日只兑现了二维数组排序。三维估算不能排
//该函数会一向改变员数组顺序
echo ‘<br/><hr/><br/>’;
//———————————————
//array_pad($arr, $size, $value)
//对数组举行填充,假设当前$arr的长度小于$size,那么,就用$value来填充$arr数组,直至$arr的长短与$size相等
//如若$arr的长短超过或等于$size,那么该函数将不会对$arr举行填空。
$size小于0则填充在$arr的左手,大于0则左边
echo ‘<br/><hr/><br/>’;
//———————————————
//array_pop($array)
//去掉数组的终极一个键。
echo ‘<br/><hr/><br/>’;
//———————————————
//array_product($arr)
//重临一个数组中享有数值的乘积。
//tip:该函数不能够处理非数值类型的数目。若是传入数组里含有‘a、b之类字符串’,那么php会报错
$arr = array(4,5,5);
echo array_product($arr);
echo ‘<br/><hr/><br/>’;
//———————————————
//array_push($arr, $keyArr)
//将$keyArr添加到$arr数组的末尾,以key/栈的方式丰裕。
//与array_merge()、array_merge_recursive()两函数的分别:
//
arrap_push()是将一个$keyArr添加到$arr里边,而其他多少个函数则是将几个函数连接成一个函数
echo ‘<br/><hr/><br/>’;
//———————————————
//array_rand($arr, $num=1)
//取出当前数组里的键,取出多少个由$num决定,默许为1
//假使$num为1,那么它将重返一个string
//如若$num>1 && $num<count($arr) 函数重回一个数组
//否则php报错
$arr = getArr(5, 15);
printr(array_rand($arr, 4));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_reduce()
//和array_map()类似,通过回调函数,对数组里的数值进行处理,并收受再次回到值
//该函数重回一个字符串。他会将数组里存有的值进行测算,并回到统计后的值,而array_map则是对各类键下的值举办测算,并回到array
//不是老子@楚,实例看手册
echo ‘<br/><hr/><br/>’;
//———————————————
//array_replace($array, $parArr,…)
//用参数数组里键的值替换掉$array里相同键的值
//假使$array数组里在前面的参数数组里不曾找到相应的键,那么添加到新数组前面
/*$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()一样。不一致在于:array_replace_recursive()可以对多维数组操作,并且不转移$array的布局,而array_replace()他最后会回来一个一维数组
$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)
//将数组里的键按相反顺序排列
echo ‘<br/><hr/><br/>’;
//———————————————
//array_search($value, $array)
//在$array数组中去找值为$value的键名
//没有找到则赶回false
//若是$array数组鸿有八个$value,那么只回去第三个分外的键
//该函数与array_keys()类似,差异在于重回值上:array_search()只会再次回到一个匹配的键名,而array_keys()则足以回到一个由具有匹配的键组成的一维数组
echo ‘<br/><hr/><br/>’;
//———————————————
//array_shift($arr)
//去掉当前$arr数组里的首先个键,并且对后边的数字索引举办再度编写(但不改动原有顺序),非数字索引不变。
//该函数与array_pop()类似,分歧在于array_pop()去掉是终极一个,array_shift()去掉脑袋
echo ‘<br/><hr/><br/>’;
//———————————————
//array_slice($arr, $offset, $length=0, false) 数组截取
//再次回到当前$arr数组里从$offset处初叶偏移,共$length个要素/键,并整合一个新数组再次来到
//假使$offset或者$length为负数,那么就是向相反方向举办偏移
//感觉和substring()字符串截取类似
//直接用php手册上的实例了
$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()函数正好相反,该函数是去掉放在$offset和$length之间这一个元素
unset($arr);
echo ‘<br/><hr/><br/>’;
//———————————————
//array_sum($arr)
//将$arr数组里的所有值举办求和添加,如若是非数值类型的则尝试举办转换,可是一大半变换后为0
//该函数只会影响一层数组,和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数组里的值提取出来,组成新的数组
$arr = array(
‘k1’=>45,’k2’=>56, ‘k3’=>’a’, ‘b’=>getArr(1, 2),
);
printr(array_values($arr));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_unique($arr) 对数组举行排重
//对$arr数组举行排重,将再也的值举行过滤。三个一样的值将只保留第二个
echo ‘<br/><hr/><br/>’;
//———————————————
//array_walk($arr, callback[回调函数], $sel_perfix=”)
//对现阶段数组下的每个键进送到 callback函数里举行拍卖
//要是加上$sel_perfix参数,回调函数也要多少个参数来接过,否则报错
//该函数只影响一层
$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();不过他会递归$arr的每一层数组,再次回到的数组不会改变原有数组的布局
echo ‘<br/><hr/><br/>’;
//———————————————
//arsort($arr)
//按照数组键名排序数组,可以对字母举行排序。如若排序失利,将回到null
echo ‘<br/><hr/><br/>’;
//———————————————
//asort()
//作用类似于arsort(),不同在于:asort()是对值进行排序

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数组陶冶
*/
//———————————————
//array_change_key_case()
改变数组索引的大大小小写字母,由最终一个参数决定:CASE_UPPER(转化为题写),CASE_LOWER(默认转化为题写)
$expArr = array(
‘fiRsT’ => ‘1’,
‘sEcoNd’ => ‘2’,
‘ThIrd’ => array(
‘HuiMa’ => ‘3’,
‘nengZhuaNma’ => ‘5’,
)
);
printr(array_change_key_case($expArr));//全转速为题写
printr(array_澳门葡京备用网址 ,change_key_case($expArr[‘ThIrd’],
CASE_UPPER));//全转速为大写 只对$expArr数组里的某部index键转化
//总计:该函数只影响数组的一层。 并且不会对原数组发生潜移默化
echo ‘<br/><hr/><br/>’;
//———————————————
//array_chunk($array, $size, false)
//将一个数组分割成一个多维数组,size决定那几个数组每$size个变成一个多维数组,
true/false决定新数组的键值是或不是沿用原数组的键
$expArr = array(‘4′,’2′,’6′,’d’,’2′);
printr(array_chunk($expArr, 3));
//总计:该函数只影响数组的一层。 并且不会对原数组暴发震慑
echo ‘<br/><hr/><br/>’;
//———————————————
//array_combine($keyArr, $valArr)
//将五个数组组合成一个数组,$keyArr做为键,$valArr做为值
$expKey = array(‘g’, ‘d’, ‘t’);
$expVal = array(‘5’, ‘8’, ‘7’);
printr(array_combine($expKey, $expVal));
//该函数同样只影响数组的一层,并且重回一个新数组
echo ‘<br/><hr/><br/>’;
//———————————————
//array_count_values($array)
//计算$array数组中各样value出现的次数,并以他个value做为新数组的键,现身次数做为value
$array = array(‘v1’=>’265’, ‘v2’=>’352’, ‘v3’=>’265’,
‘v4’=>’349’, ‘v5’=>’265’);
printr(array_count_values($array));
//总计:该函数只可以用于总括值为
string和integer类型的value,其余品种会发warning!
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff($array1, $array2…)
//以$array1为根基数组,他的值不出新在此外任何参数数组里的值组成一个新数组
$arr1 = array(‘v4’=>458, ‘gren’, ‘b5’, ‘a5’);
$arr2 = array(‘v4’=>598, ‘red’, ‘a5’, ‘c4’);
printr(array_diff($arr1, $arr2));
//总括:拿一个数组到一堆数组中找出这么些数组中从不的值,计算、数据比较应该会用到
//array_intersect($array, $parArr, ….)
//该函数同array_diff在效率上平等,只是array_intersect()再次回到的是集体所有的数目,array_diff则是只设有于$array中的数据
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_assoc($array1, $array2…)
//同 array_diff()函数,不过那些也会拿key举行对照
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_key
//同array_diff()函数
//只是其一只拿$array1的key去与其他参数数组进行检索
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_uassoc($arr1, $parArr…., 回调函数)
//功能同array_diff(),可是急需用户定义一个回调函数
//未了解该函数的意义
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_diff_ukey($arr1, $parArr…., 回调函数)
//功能同array_diff_key(),只然而和array_diff_uassoc一样,须求一个回调函数
//
//
echo ‘<br/><hr/><br/>’;
//———————————————
//array_fill($startInt, $numInt, $value)
//把$value填充到一个新数组,新数组的索引起先地方上马由$startInt决定,$numInt则控制那么些数组生成多少个目录。
//tip:除了$value,$startInt,$numInt必须为数字,否则报错
printr(array_fill(2, 5, ‘value’));
//总结:还没悟出干啥用
echo ‘<br/><hr/><br/>’;
//———————————————
//array_fill_keys($arrKeys, $value);
//功能同array_fill()函数。只不过那里用$arrKeys【一个数组的值】来做为新数组的键
$arrKeys = array(’45’, ‘d’, ‘b’, ‘c’);
printr(array_fill_keys($arrKeys, ‘value’));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_filter($arr, callBack回调函数)
//过滤函数,通过对$arr数组的值的判断,假使 callBack回调函数
重返true,则将眼前键以及值添加到新的数组里
//TIP:回调函数可以写个规则,来过滤掉里边不相符规则的数组键
function cb($val)
{
return $val%2 == 0;
}
$array = array(‘k1’=>3, ‘k2’=>5,’k4’=>54654, ‘k5’=>8794,
8945, 32549564);
printr($array, ‘cb’);
//tip:回调函数名提出用引号引起来
//统计:该方法可以做成一个多少过滤的集成
unset($array);
echo ‘<br/><hr/><br/>’;
//———————————————
//array_flip($array)
//将数组中key和value的关联转移。只扶助string和integr类型的键,其余种类将会暴发警告,并且有难题的键值不转移。在变化莫测的新的数组,就算键相同,他会不停的轮换掉现有键的值
$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)
//判断一个键是或不是存在于方今数组中,重临bool。也可用来判定目标
$array = array(‘cb’ => 234, ‘dv’=>45, ‘one’=>897);
if(array_key_exists(‘one’, $array))
echo ‘存在那个数组中’;
else
echo ‘不存在’;
echo ‘<br/><hr/><br/>’;
//———————————————
//array_keys($array, $selSearch_value)
//再次来到数组中的键名并结成一个新数组,假诺指定了$selSearch_value值,那么将重返数组里等于$selSearch_value的键名
$array = getArr(4, 10);
printr(array_keys($array));
printr(array_keys($array, ‘5’));//带值的查找
unset($array);
//总计:这么些也可用以数据统计,数据相比较验证
echo ‘<br/><hr/><br/>’;
//———————————————
echo ‘array_map:’;
//array_map(‘callBack’, $array,…)
//把传播的函数,再次来到经callback回调函数的再次回到值
//回调函数也足以回到一个数组。并且,回调函数只接受一个数组里的值传入
function mapCb($n)
{
return $n*$n*$n;
}
$array = getArr(4, 15);
printr(array_map(‘mapCb’, $array));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_merge($array,$array2…)
//将八个数组组成一个数组,并对数字索引进行再一次编写。
$arr1 = getArr(1, 5);
$arr2 = getArr(5, 10);
printr(array_merge($arr1, $arr2));
//计算:将多个数组组成一个新数组。
echo ‘<br/><hr/><br/>’;
//———————————————
//array_merge_recursive($arr1, $arr2….)
//功效同上。但函数会将键名相同的值组成一个新数组,而不是替换掉
//但若是要用,根据实际情形选取
echo ‘<br/><hr/><br/>’;
//———————————————
//array_multisort()
//多维数组排序,近来只兑现了二维数组排序。三维推断不可以排
//该函数会直接改变员数组顺序
echo ‘<br/><hr/><br/>’;
//———————————————
//array_pad($arr, $size, $value)
//对数组进行填充,如若当前$arr的尺寸小于$size,那么,就用$value来填充$arr数组,直至$arr的长短与$size相等
//若是$arr的长短超过或等于$size,那么该函数将不会对$arr举行填写。
$size小于0则填充在$arr的左手,大于0则右侧
echo ‘<br/><hr/><br/>’;
//———————————————
//array_pop($array)
//去掉数组的末段一个键。
echo ‘<br/><hr/><br/>’;
//———————————————
//array_product($arr)
//重返一个数组中具有数值的乘积。
//tip:该函数不可以处理非数值类型的数量。即便传入数组里含有‘a、b之类字符串’,那么php会报错
$arr = array(4,5,5);
echo array_product($arr);
echo ‘<br/><hr/><br/>’;
//———————————————
//array_push($arr, $keyArr)
//将$keyArr添加到$arr数组的末尾,以key/栈的花样丰盛。
//与array_merge()、array_merge_recursive()两函数的界别:
//
arrap_push()是将一个$keyArr添加到$arr里边,而别的几个函数则是将七个函数连接成一个函数
echo ‘<br/><hr/><br/>’;
//———————————————
//array_rand($arr, $num=1)
//取出当前数组里的键,取出多少个由$num决定,默许为1
//借使$num为1,那么它将回来一个string
//假若$num>1 && $num<count($arr) 函数再次来到一个数组
//否则php报错
$arr = getArr(5, 15);
printr(array_rand($arr, 4));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_reduce()
//和array_map()类似,通过回调函数,对数组里的数值举行处理,并收受再次回到值
//该函数再次来到一个字符串。他会将数组里存有的值进行测算,并赶回总括后的值,而array_map则是对每个键下的值进行测算,并回到array
//不是太明了,实例看手册
echo ‘<br/><hr/><br/>’;
//———————————————
//array_replace($array, $parArr,…)
//用参数数组里键的值替换掉$array里相同键的值
//要是$array数组里在后边的参数数组里没有找到呼应的键,那么添加到新数组后面
/*$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()一样。分歧在于:array_replace_recursive()可以对多维数组操作,并且不更改$array的布局,而array_replace()他最后会回去一个一维数组
$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)
//将数组里的键按相反顺序排列
echo ‘<br/><hr/><br/>’;
//———————————————
//array_search($value, $array)
//在$array数组中去找值为$value的键名
//没有找到则赶回false
//假设$array数组鸿有七个$value,那么只回去第四个门当户对的键
//该函数与array_keys()类似,不一致在于再次回到值上:array_search()只会回来一个同盟的键名,而array_keys()则可以重返一个由具有匹配的键组成的一维数组
echo ‘<br/><hr/><br/>’;
//———————————————
//array_shift($arr)
//去掉当前$arr数组里的首先个键,并且对前面的数字索引进行重新编写(但不转移原来顺序),非数字索引不变。
//该函数与array_pop()类似,分裂在于array_pop()去掉是终极一个,array_shift()去掉脑袋
echo ‘<br/><hr/><br/>’;
//———————————————
//array_slice($arr, $offset, $length=0, false) 数组截取
//再次回到当前$arr数组里从$offset处开首偏移,共$length个要素/键,并结合一个新数组重临
//假使$offset或者$length为负数,那么就是向相反方向进行偏移
//感觉和substring()字符串截取类似
//直接用php手册上的实例了
$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()函数正好相反,该函数是去掉放在$offset和$length之间那一个元素
unset($arr);
echo ‘<br/><hr/><br/>’;
//———————————————
//array_sum($arr)
//将$arr数组里的所有值进行求和添加,即使是非数值类型的则尝试举行更换,不过一大半转换后为0
//该函数只会影响一层数组,和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数组里的值提取出来,组成新的数组
$arr = array(
‘k1’=>45,’k2’=>56, ‘k3’=>’a’, ‘b’=>getArr(1, 2),
);
printr(array_values($arr));
echo ‘<br/><hr/><br/>’;
//———————————————
//array_unique($arr) 对数组进行排重
//对$arr数组举办排重,将再也的值举行过滤。多个相同的值将只保留第二个
echo ‘<br/><hr/><br/>’;
//———————————————
//array_walk($arr, callback[回调函数], $sel_perfix=”)
//对眼前数组下的每个键进送到 callback函数里展开拍卖
//假诺加上$sel_perfix参数,回调函数也要三个参数来接收,否则报错
//该函数只影响一层
$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();可是他会递归$arr的每一层数组,再次来到的数组不会转移原有数组的社团
echo ‘<br/><hr/><br/>’;
//———————————————
//arsort($arr)
//根据数组键名排序数组,可以对字母举行排序。如若排序失利,将赶回null
echo ‘<br/><hr/><br/>’;
//———————————————
//asort()
//功效看似于arsort(),差别在于:asort()是对值进行排序

array_diff_ukey(同上,’自定义比较函数’)

和array_diff_key()用法几乎,只是比较的规则可以协调安装,上面有示范代码,可以加一些繁杂的。比如是学员数量的数组,判断名字再次然后分数大于60.自定义函数的俩参数是key


array_diff_ukey(同上,’自定义相比较函数’)

和array_diff_key()用法大致,只是比较的条条框框可以自己设置,上边有示范代码,能够加一些错综复杂的。比如是学生数量的数组,判断名字重复然后分数大于60.自定义函数的俩参数是key


array_diff_uassoc(同上,’自定义比较函数’)

和上一个大多,除了俩参数是因素(即’key’=>’value’)


 

以下是。那5个函数的演示。 

/***********array_diff_assoc(统计与多个数组的键值差集) ——————返回$arr1中 后续数组没有的键值集合(数组2~数组n中出现了一样的键值 就不包含这对键值)*****************/
$arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$arr2 = array('s1' => 'v1', 's2' => 'v2', 'k3' => 'v3');//有和$arr1中一样的'k3' => 'v3',函数的返回值中就不包含'k3' => 'v3'了
$arr3 = array('k1' => 'v1', 's2' => 'v2');//有一样的'k1' => 'v1',返回就不包含'k1' => 'v1'了
$arrDiffAssoc = array_diff_assoc($arr1, $arr2, $arr3);
var_dump($arrDiffAssoc);

/***********array_diff(统计与多个数组的值差集) *****************/
$arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$arr2 = array('a1' => 'v1', 'k2' => 'a2');
$arr3 = array('a2' => 'v2');
$arrDiff = array_diff($arr1, $arr2, $arr3);
var_dump($arrDiff);

/***********array_diff_key(统计与多个数组的键差集) *****************/
$arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$arr2 = array('k1' => 'apple', 'k2' => 'banana');//只对比键名,同键名的键值对在函数返回值中扣掉
$arr3 = array('a1' => 'v1');
$arrDiffKey = array_diff_key($arr1, $arr2, $arr3);
var_dump($arrDiffKey);

/***********array_diff_ukey(用自定义回调函数,统计与多个数组的键差集) *****************/
$arr1 = array( 'blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4 );
$arr2 = array( 'green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
$arrDiffUkey = array_diff_ukey($arr1, $arr2, 'arr_key_compare_func');
var_dump($arrDiffUkey);

function arr_key_compare_func ($k1, $k2) {
    if($k1 == $k2)
        return 0;
    else if ($k1 > $k2)
        return -1;
    else
        return 1;
}

/***********array_diff_uassoc(用自定义回调函数,统计与多个数组的键值差集) *****************/
$arr1 = array('blue' => 1, 'red' => 2, 'green' =>3 , 'purple' => 4);
$arr2 = array('green' => 5, 'blue' => 1, 'yellow' => 7, 'cyan' => 8);
$arrDiffUassoc = array_diff_uassoc($arr1, $arr2, 'arr_assoc_compare_func');
var_dump($arrDiffUassoc);
function arr_assoc_compare_func($a, $b) {
    if ($a === $b)
        return 0;
    return ($a > $b) ? 1 : -1;
}

 

array_diff_uassoc(同上,’自定义比较函数’)

和上一个基本上,除了俩参数是因素(即’key’=>’value’)


 

以下是。那5个函数的言传身教。 

/***********array_diff_assoc(统计与多个数组的键值差集) ——————返回$arr1中 后续数组没有的键值集合(数组2~数组n中出现了一样的键值 就不包含这对键值)*****************/
$arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$arr2 = array('s1' => 'v1', 's2' => 'v2', 'k3' => 'v3');//有和$arr1中一样的'k3' => 'v3',函数的返回值中就不包含'k3' => 'v3'了
$arr3 = array('k1' => 'v1', 's2' => 'v2');//有一样的'k1' => 'v1',返回就不包含'k1' => 'v1'了
$arrDiffAssoc = array_diff_assoc($arr1, $arr2, $arr3);
var_dump($arrDiffAssoc);

/***********array_diff(统计与多个数组的值差集) *****************/
$arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$arr2 = array('a1' => 'v1', 'k2' => 'a2');
$arr3 = array('a2' => 'v2');
$arrDiff = array_diff($arr1, $arr2, $arr3);
var_dump($arrDiff);

/***********array_diff_key(统计与多个数组的键差集) *****************/
$arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$arr2 = array('k1' => 'apple', 'k2' => 'banana');//只对比键名,同键名的键值对在函数返回值中扣掉
$arr3 = array('a1' => 'v1');
$arrDiffKey = array_diff_key($arr1, $arr2, $arr3);
var_dump($arrDiffKey);

/***********array_diff_ukey(用自定义回调函数,统计与多个数组的键差集) *****************/
$arr1 = array( 'blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4 );
$arr2 = array( 'green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
$arrDiffUkey = array_diff_ukey($arr1, $arr2, 'arr_key_compare_func');
var_dump($arrDiffUkey);

function arr_key_compare_func ($k1, $k2) {
    if($k1 == $k2)
        return 0;
    else if ($k1 > $k2)
        return -1;
    else
        return 1;
}

/***********array_diff_uassoc(用自定义回调函数,统计与多个数组的键值差集) *****************/
$arr1 = array('blue' => 1, 'red' => 2, 'green' =>3 , 'purple' => 4);
$arr2 = array('green' => 5, 'blue' => 1, 'yellow' => 7, 'cyan' => 8);
$arrDiffUassoc = array_diff_uassoc($arr1, $arr2, 'arr_assoc_compare_func');
var_dump($arrDiffUassoc);
function arr_assoc_compare_func($a, $b) {
    if ($a === $b)
        return 0;
    return ($a > $b) ? 1 : -1;
}

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website