- 1. array()-创建数组
- 2. array_change_key_case()-将数组的键名称修改为全大写,或者是全小写
- 3. array_chunk()-将一个数组分割成多个,那么最终返回的就至少是二维数组了。
- 4.array_column-数组中指定的一列
- 5. array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
- 6. array_count_values — 统计数组中所有的值出现的次数
- 7. array_diff — 计算数组的差集
- 8. array_fill — 用给定的值填充数组
- 9. array_filter — 用回调函数过滤数组中的单元
- 10. array_flip — 交换数组中的键和值
- 11. array_intersect — 计算数组的交集
- 12. array_keys — 返回数中某个元素的或所有的键名
- 13. array_map — 为数组的每个元素应用回调函数
- 14. array_merge — 合并一个或多个数组
- 15. array_multisort — 对多个数组或多维数组进行排序
- 16. array_pad — 以指定长度将一个值填充进数组
- 17. array_pop — 弹出数组最后一个单元(出栈)
- 18. array_product — 计算数组中所有值的乘积
- 19. array_push — 将一个或多个单元压入数组的末尾(入栈)
- 20. array_replace — 使用传递的数组替换第一个数组的元素
- 21. array_reverse — 返回单元顺序相反的数组
- 22. array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
- 23. array_shift — 将数组开头的单元移出数组
- 24. array_slice — 从数组中取出一段
- 25. array_splice — 去掉数组中的某一部分并用其它值取代
- 26. array_sum — 对数组中所有值求和
- 27. array_unique — 移除数组中重复的值
- 28. array_unshift — 在数组开头插入一个或多个单元
- 29. array_values — 返回数组中所有的值
- 30. 数组指针偏移
1. array()-创建数组
用于创建数组的函数的函数,是一个语言结构,非常规的函数
2. array_change_key_case()-将数组的键名称修改为全大写,或者是全小写
array array_change_key_case ( array
$array
[, int$case
= CASE_LOWER ] ) CASE_UPPER , CASE_LOWER
3. array_chunk()-将一个数组分割成多个,那么最终返回的就至少是二维数组了。
array array_chunk ( array
$array
, int$size
[, bool$preserve_keys
= false ] ) 第二个参数是:分割后每个数组的单元数目 第三个参数是:是否保留原有的索引,默认是false,按照 0 1 2 排序
<?php
input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
/*
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
)
)
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[2] => c
[3] => d
)
[2] => Array
(
[4] => e
)
)
*/
4.array_column-数组中指定的一列
从多维数组中返回单列数组 array array_column ( array
$input
, mixed$column_key
[, mixed$index_key
= null ] ) 第二个参数:需要返回的列,值 第三个参数:作为返回数组的索引/键的列
<?php
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);
// [1] 取出所有人的 first_name
$first_names = array_column($records, 'first_name');
print_r($first_names);
/*
Array
(
[0] => John
[1] => Sally
[2] => Jane
[3] => Peter
)
*/
// [2] 以id作为索引,last_name作为值
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
/*
Array
(
[2135] => Doe
[3245] => Smith
[5342] => Jones
[5623] => Doe
)
*/
?>
5. array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array array_combine ( array
$keys
, array$values
) 第一个参数:一个数组,作为键 第二个参数:一个数组,作为值 返回值:组成的新的数组
<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
/*
Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)
*/
6. array_count_values — 统计数组中所有的值出现的次数
array array_count_values ( array
$array
)
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
/*
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
*/
7. array_diff — 计算数组的差集
array array_diff ( array
$array1
, array$array2
[, array$...
] ) 计算前者对后者的差集 后续参数就是更多相比较的数组
<?php
$arr1 = [1, 2, 3, 4];
$arr2 = [1, 4, 5, 7];
$arr3 = [2, 7];
$result = array_diff($arr1, $arr2);
print_r($result);
/*
Array
(
[1] => 2
[2] => 3
)
*/
$result2 = array_diff($arr1, $arr2, $arr3);
print_r($result2);
/*
Array
(
[2] => 3
)
*/
更多相关函数: array_diff_assoc — 带索引检查计算数组的差集,索引也会被列入检查范围 array_diff_key — 使用键名比较计算数组的差集,根据键名来比较
8. array_fill — 用给定的值填充数组
array array_fill ( int
$start_index
, int$num
, mixed$value
) 第一个参数:第一个填充元素的数组下标 第二个参数:填充的数量 第三个参数:填充的值
<?php
$a = array_fill(5, 6, 'banana');
$b = array_fill(-2, 4, 'pear');
print_r($a);
print_r($b);
/*
Array
(
[5] => banana
[6] => banana
[7] => banana
[8] => banana
[9] => banana
[10] => banana
)
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)
*/
相关函数 array_fill_keys — 使用指定的键和值填充数组。 预计用到的也会较多
<?php
$keys = array('foo', 5, 10, 'bar');
$a = array_fill_keys($keys, 'banana');
print_r($a);
/*
Array
(
[foo] => banana
[5] => banana
[10] => banana
[bar] => banana
)
*/
9. array_filter — 用回调函数过滤数组中的单元
array array_filter ( array
$array
[, callable$callback
[, int$flag
= 0 ]] )
<?php
// 奇数
function odd($var)
{
return($var & 1);
}
// 偶数
function even($var)
{
return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
10. array_flip — 交换数组中的键和值
array array_flip ( array
$array
)
11. array_intersect — 计算数组的交集
参考 8
12. array_keys — 返回数中某个元素的或所有的键名
这个函数可以从一维数组中获取某个值为xxx的元素的位置,亦可以是获取全部元素的键 可以用于查找某个元素在一维数组中出现的位置,但对于多维数组,不好用。
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large")
);
print_r(array_keys($array));
/*
Array
(
[0] => 0
[1] => color
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)
Array
(
[0] => color
[1] => size
)
*/
13. array_map — 为数组的每个元素应用回调函数
array array_map ( callable
$callback
, array$array1
[, array$...
] ) callback:回调函数,应用到每个数组里的每个元素。 array1:数组,遍历运行callback
函数。 数组列表:每个都遍历运行callback
函数。
<?php
// [1] 第一种写法,php中貌似所有的回调函数参数都支持我这么写
$a = array(1, 2, 3, 4, 5);
$b = array_map(function($n) {
return ($n * $n * $n);
}, $a);
print_r($b);
/*
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
*/
// [2] 第二种
function cube($n)
{
return ($n * $n * $n);
}
$arr1 = [1, 2, 3, 4, 5];
$arr2 = array_map('cube', $arr1);
print_r($arr2);
14. array_merge — 合并一个或多个数组
array array_merge ( array
$array1
[, array$...
] ) 返回合并后的数组
<?php
// [1] 常规方式
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$res1 = array_merge($arr1, $arr2);
print_r($res1);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
*/
当合并的是关联数组时,前面一个索引的值会被后面的值覆盖
<?php
$arr1 = ['a' => 1, 'b' => 2, 'c' => 3];
$arr2 = ['a' => 4, 'e' => 5, 'c' => 6];
$res1 = array_merge($arr1, $arr2);
print_r($res1);
/*
Array
(
[a] => 4
[b] => 2
[c] => 6
[e] => 5
)
*/
如果想要完全的保留第一个数组中的元素,附带添加第二个数组中的元素。可是使用 + 后面的元素只要出现有相同的键名称都会被统统忽略。
<?php
$arr1 = ['a' => 1, 'b' => 2, 'c' => 3];
$arr2 = ['a' => 4, 'e' => 5, 'c' => 6];
$res1 = $arr1 + $arr2;
print_r($res1);
/*
Array
(
[a] => 1
[b] => 2
[c] => 3
[e] => 5
)
*/
对于合成变量和数组 我们可以先将变量强制转换成数组
<?php
$name = 'xs';
$arr = [1, 2, 3];
print_r(array_merge((array) $name, $arr));
/*
Array
(
[0] => xs
[1] => 1
[2] => 2
[3] => 3
)
*/
相关函数 array_merge_recursive — 递归地合并一个或多个数组
15. array_multisort — 对多个数组或多维数组进行排序
16. array_pad — 以指定长度将一个值填充进数组
可以参考一下 第8个函数 array_fill,这二者的区别如下所示:
array_fill : 用给定的值填充成数组,是变量值像数组转换
- 第一个参数:开始填充的位置
- 第二个参数:填充的数量
- 第三个参数:填充的值
array_pad:向数组中填充变量值
- 第一个参数:原油的数组
- 第二个参数:新数组的长度
- size > 0 , 右侧填充
- size < 0 , 左侧填充
- 如果 |size| < count(原数组) ,不会发生填充
- 第三个参数:被填充的值
- 返回值:填充后的数组
<?php
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
// result is array(12, 10, 9, 0, 0)
$result = array_pad($input, -7, -1);
// result is array(-1, -1, -1, -1, 12, 10, 9)
$result = array_pad($input, 2, "noop");
// not padded
17. array_pop — 弹出数组最后一个单元(出栈)
返回数组的最后一个元素,并将数组的长度 -1 。 如果
array
是空(如果不是一个数组),将会返回NULL
18. array_product — 计算数组中所有值的乘积
这就要求我们的数组,最好是一个数值组成的数组。
- 如果数组是空数组,返回1,PHP 5.3.6以前返回的是0
- 如果是一个混合的数组呢,返回0
- 如果是多维数组呢,抱歉根本就不好用。
<?php
// [1] 混合数组返回了 0
$arr = [1, 2, 3, 'a'];
print_r(array_product($arr). '<br>') ; // 0
// [2] 空数组
$arr2 = [];
print_r(array_product($arr2). '<br>'); // 1
// [3] 正常纯数字数组, 返回正常的值
$arr3 = [1, 2, 3];
print_r(array_product($arr3). '<br>'); // 6
// [4] 多维数组呢?
$arr4 = [
'first' => [1, 2, 3],
'second' => [4, 5, 6],
];
print_r(array_product($arr4). '<br>'); // 1
// [5]
$arr4 = [
1 => [1, 2, 3],
2 => [4, 5, 6],
];
print_r(array_product($arr4). '<br>'); // 1
19. array_push — 将一个或多个单元压入数组的末尾(入栈)
和array_pop() 相反,但是这个函数不仅可以让单个变量值入栈,也可以让数组入栈。 功能比较强,而且用的地方也比较多 需要注意的是:它的返回值是处理后元素的个数,而不是处理后的数组!!!
<?php
// [1] 常规操作
$arr1 = [1, 2, 3];
$name = 'xs';
array_push($arr1, $name);
print_r($arr1);
// 1, 2, 3,'xs'
// [2] 入栈多个值
$arr1 = [1, 2, 3];
array_push($arr1, 'xs', '19960118', '男');
print_r($arr1);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => xs
[4] => 19960118
[5] => 男
)
// [3] 入栈一个数组
$infoArr = ['name' => '向上', 'sex' => '男',];
$other =['salary' => '8000', 'girfirend' => 'lxm'];
array_push($infoArr, $other);
print_r($infoArr);
/*
Array
(
[name] => 向上
[sex] => 男
[0] => Array
(
[salary] => 8000
[girfirend] => lxm
)
)
*/
*/
20. array_replace — 使用传递的数组替换第一个数组的元素
array array_replace ( array
$array1
, array$array2
[, array$...
] )
- 作用除了修改还可以插入
- 参数:
- 第一个参数为原数组
- 后面的参数为替换数组
- 返回值:
- 替换好返回替换后的数组
- 发生错误,返回NULL
<?php
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$basket = array_replace($base, $replacements);
print_r($basket);
/*
Array
(
[0] => pineapple
[1] => banana
[2] => apple
[3] => raspberry
[4] => cherry
)
/*
21. array_reverse — 返回单元顺序相反的数组
array array_reverse ( array
$array
[, bool$preserve_keys
= false ] )
- 参数:
- 第一个参数原数组
- 第二个参数是一个bool值
- 设置为
TRUE
会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。- 返回值:返回反转后的数组。
<?php
// [1] 只使用第一个参数,数字索引
$arr = [1, 2, 3, 4];
print_r(array_reverse($arr));
/*
Array
(
[0] => 4
[1] => 3
[2] => 2
[3] => 1
)
*/
// [2] 第二个参数设置为 TRUE 会保留数字的键
print_r(array_reverse($arr, true));
/*
Array
(
[3] => 4
[2] => 3
[1] => 2
[0] => 1
)
*/
22. array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
mixed array_search ( mixed
$needle
, array$haystack
[, bool$strict
= false ] )
- 参数:
- 第一个参数:要找的值
- 第二个参数:原数组
- 第三个参数:,可选参数,布尔值默认 false
- 如果设置为 true ,会严格比较
- 返回值:
- 找到了返回该元素的键,如果出现了不止一次,则返回第一个出现的键。要返回所有匹配值的键,应该用 array_keys() 加上可选参数
search_value
来代替。- 没找到返回false
<?php
// [1] 简单使用
$arr = [1, 2, 3];
if (array_search('1', $arr)) {
echo 'Found <br>';
}else {
echo 'Not found! <br>';
}
// Not found!
// [2] 如果设置第二个参数,还必须为同一个对象的实例子
$arr = [1, 2, 3];
if (array_search(1, $arr, true)) {
echo 'Found <br>';
} else {
echo 'Not found! <br>';
}
// Not found!
23. array_shift — 将数组开头的单元移出数组
24. array_slice — 从数组中取出一段
array array_slice ( array
$array
, int$offset
[, int$length
=NULL
[, bool$preserve_keys
= false ]] )
- 参数:
- 1️⃣:原数组
- 2️⃣:截取的偏移量
0 左侧开始
- < 0 右侧开始
- 3️⃣:可选参数 截取的长度
- 4️⃣:可选参数 重置数字索引,默认会重置。默认值是false。
- 返回值:返回其中一段。 如果 offset 参数大于 array 尺寸,就会返回空的 array。
<?php
// [1] 简单的用法
$input = array("a", "b", "c", "d", "e");
print_r(array_slice($input, 2));
/*
Array
(
[0] => c
[1] => d
[2] => e
)
*/
// [2] 设置最后一个参数为 true 则保留原数组中的索引
$input = array("a", "b", "c", "d", "e");
print_r(array_slice($input, 2, 3, true));
/*
Array
(
[2] => c
[3] => d
[4] => e
)
*/
25. array_splice — 去掉数组中的某一部分并用其它值取代
array array_splice ( array
&$input
, int$offset
[, int$length
= count($input) [, mixed$replacement
= array() ]] )
- 参数:
- 1️⃣:原数组
- 2️⃣:偏移量
- 3️⃣:可选参数,长度
- 4️⃣:可选参数, 如果给出了
replacement
数组,则被移除的单元被此数组中的单元替代。- 返回值:返回一个包含有被移除单元的数组。
<?php
// [1] 只保留前两个元素
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")
... ...
26. array_sum — 对数组中所有值求和
27. array_unique — 移除数组中重复的值
array array_unique ( array
$array
[, int$sort_flags
= SORT_STRING ] )
- 参数:
- 1️⃣:原数组
- 2️⃣:可选参数,用于排列
SORT_REGULAR
- 按照通常方法比较(不修改类型)SORT_NUMERIC
- 按照数字形式比较SORT_STRING
- 按照字符串形式比较SORT_LOCALE_STRING
- 根据当前的本地化设置,按照字符串比较。- 返回值:返回过滤后的数组。
- 注意:array_unique() 不能应用于多维数组。
<?php
// [1] 错误的用法
$arr = array(
'name' => 'xs',
'pad' => 'xs',
'other' => 'xs',
'age' => 24,
'sex' => '男'
);
array_unique($arr);
print_r($arr);
/*
Array
(
[name] => xs
[pad] => xs
[other] => xs
[age] => 24
[sex] => 男
)
*/
// [1] 正确的用法
$arr2 = array(
'name' => 'xs',
'pad' => 'xs',
'other' => 'xs',
'age' => 24,
'sex' => '男'
);
print_r(array_unique($arr2));
/*
Array
(
[name] => xs
[age] => 24
[sex] => 男
)
*/
28. array_unshift — 在数组开头插入一个或多个单元
29. array_values — 返回数组中所有的值
30. 数组指针偏移
1. next()
将数组中的内部指针向前移动一位 mixed next ( array
&$array
) 返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回FALSE
。 next()指针在返回前移动,所以它返回的是下一个元素的值