数组函数学习一
1. array_chunk 将一个数组分割成多个
$arr1=array('age'=>6,3,'hello');
$arr2=array_chunk($arr1,2);
$arr3=array_chunk($arr1,2,true); //保持了原有的键名
print_r($arr2);
print_r($arr3);
2.array_column 返回数组中指定的一列
$arr1=array(
array('id'=>1,'name'=>'he'),
array('id'=>2,'name'=>'ccj'),
array('id'=>2,'name'=>'qq')
);
//二维数组变成一维数组,并将name列提出来
$arr2=array_column($arr1,'name');
print_r($arr2);
//取出name列,并用对应的id作为键值
$arr3=array_column($arr1,'name','id');
print_r($arr3);
3.array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
$arr1=array('id'=>3,'name'=>'ceshi','age'=>16);
$arr2=array('id'=>6,'name'=>'test','age'=>26);
$arr3=array_combine($arr1,$arr2);
print_r($arr3);
4.array_count_values 统计数组中所有的值
$arr1=array('id'=>16,'name'=>'ceshi','age'=>16,'new_name'=>'hello');
$arr2=array_count_values($arr1);
print_r($arr2);
5.array_diff_assoc 带索引检查计算数组的差集
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$arr3=array_diff_assoc($array1,$array2);
print_r($arr3);
注:上面的例子中可以看到键值对 “a” => “green” 在两个数组中都有,因此不在本函数的输出中。与此不同,键值对 0 => “red” 出现在输出中是因为第二个参数中的 “red” 的键名是 1。
6. array_diff_key 键名比较计算数组的差集
$arr1=array('blue'=>1,'red'=>2,'green'=>4,'purple'=>3);
$arr2=array('green'=>5,'blue'=>2,'yellow'=>4,'cyan'=>7);
$arr3=array_diff_key($arr1,$arr2);
print_r($arr3);
7. array_diff 计算数组差集
$arr1=array('a'=>'green','red','blue','red');
$arr2=array('b'=>'green','yellow','red');
$arr3=array_diff($arr1,$arr2);
print_r($arr3);
8.array_fill_keys 使用指定的键和值填充数组
$arr4=array_fill_keys($arr1,$arr2);
print_r($arr3);
print_r($arr4);
9. array_fill 用给定的值填充数组
$arr1=array_fill(3,4,'banana');
$arr2=array_fill(-2,4,'banana');
print_r($arr1);
print_r($arr2);
10. array_filter 用回调函数过滤数组中的单元
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
print_r(array_filter($array1, "odd"));
print_r(array_filter($array2, "even"));
不使用callback时的array_filter()
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
带 flag 标记的 array_filter()
//ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数
//ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
print_r(array_filter($arr, function($k) {
return $k == 'b';
}, ARRAY_FILTER_USE_KEY));
print_r(array_filter($arr, function($v, $k) {
return $k == 'b' || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: