所有数组函数学习手册地址:
https://www.php.net/manual/zh/ref.array.php
贼多有没有, 好在很多还是很眼熟的.
常用函数(个人认为常用):
array_values, array_keys, array_push, array_pop, array_shift, array_unshift, array_merge, array_product, array_rand, array_sum, array_search, array_slice, array_splice, array_unique, count, in_array,array_reverse
还有前面已经学习过的: range, compact, next, prev, current, end, reset, list, each, key
记录部分函数的基础用法, 更多函数更多详细用法还得去查看上面的手册.
- array_keys, array_values
(1) array_keys — 返回数组中部分的或所有的键名
(2) array_values — 返回数组中所有的值
<?php
header('content-type: text/html;charset=utf-8');
$data = ['username'=>'guoyou.li','password'=>'12345476','sex'=>'男'];
$keys = join(',',array_keys($data));
$vals = "'".join("','",array_values($data))."'";
$sql = "INSERT user({$keys}) INTO VALUES({$vals})";
echo $sql;
// INSERT user(username,password,sex) INTO VALUES('guoyou.li','12345476','男')
- array_push, array_pop, array_shift, array_unshift
(1) array_push — 将一个或多个单元压入数组的末尾(入栈),array 的长度将根据入栈变量的数目增加
(2) array_pop — 弹出数组最后一个单元(出栈),并将数组 array 的长度减一。
(3) array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。
(4) array_unshift — 在数组开头插入一个或多个单元
用法: array_unshift ( array &$array [, mixed $... ] ) : int
<?php
header('content-type: text/html;charset=utf-8');
$arr = ['a','b','c'];
// 向数组的末尾插入新的元素
array_push($arr,2,3,4,5,6,7);
print_r($arr);
/*
Array
(
[0] => a
[1] => b
[2] => c
[3] => 2
[4] => 3
[5] => 4
[6] => 5
[7] => 6
[8] => 7
)
*/
// 向数组的前面插入新的元素
array_unshift($arr,'A','B','C');
print_r($arr);
/*
Array
(
[0] => A
[1] => B
[2] => C
[3] => a
[4] => b
[5] => c
[6] => 2
[7] => 3
[8] => 4
[9] => 5
[10] => 6
[11] => 7
)
*/
// 删掉数组的第一个元素, 并返回
$shift = array_shift($arr);
echo $shift.'<br />'; // => A
print_r($arr);
/*
Array
(
[0] => B
[1] => C
[2] => a
[3] => b
[4] => c
[5] => 2
[6] => 3
[7] => 4
[8] => 5
[9] => 6
[10] => 7
)
*/
// 删掉数组的最后一个元素, 并返回
$pop = array_pop($arr);
echo $pop.'<br />'; // => 7
print_r($arr);
/*
Array
(
[0] => B
[1] => C
[2] => a
[3] => b
[4] => c
[5] => 2
[6] => 3
[7] => 4
[8] => 5
[9] => 6
)
*/
- array_product, array_sum, count
(1) array_product() 以整数或浮点数返回一个数组中所有值的乘积。
(2) array_sum() 将数组中的所有值相加,并返回结果。
(3) count — 计算数组中的单元数目,或对象中的属性个数
<?php
header('content-type: text/html;charset=utf-8');
$arr = [3,4,34,3,6];
// 求积
$product = array_product($arr);
echo $product,'<br/>'; // => 7344
// 求和
$sum = array_sum($arr);
echo $sum,'<br />'; // => 50
// 数组的个数
$length = count($arr);
echo $length; // => 5
- in_array, array_merge, array_rand, array_search, array_reverse
(1) in_array — 检查数组中是否存在某个值
用法: in_array($needle, $haystack [, bool $strict = FALSE] ) : bool
$arr = [3,4,34,3,6];
var_dump(in_array(34, $arr)); // => bool(true)
echo '<br />';
var_dump(in_array('34', $arr)); // => bool(true)
echo '<br />';
// 检验类型
var_dump(in_array('34', $arr, true)); // => bool(false)
echo '<br />';
var_dump(in_array('666', $arr)); // => bool(false)
echo '<br />';
(2) array_merge — 合并一个或多个数组
用法: array_merge ( array $array1 [, array $... ] ) : array
$a = [3,4,34,3,6];
$b = ['a','b'];
// 合并数组
$c = array_merge($a, $b);
print_r($a);
/*
// $a
Array
(
[0] => 3
[1] => 4
[2] => 34
[3] => 3
[4] => 6
)
*/
print_r($b);
/*
* $b
Array
(
[0] => a
[1] => b
)
*/
print_r($c);
/*
// $c
Array
(
[0] => 3
[1] => 4
[2] => 34
[3] => 3
[4] => 6
[5] => a
[6] => b
)
*/
(3) array_rand — 从数组中随机取出一个或多个单元
用法: array_rand ( array $array [, int $num = 1 ] )
如果只取出一个,array_rand() 返回随机单元的键名。 否则就返回包含随机键名的数组
$arr = ['a','b','guoyou','hahahhahaha'];
$result = array_rand($arr);
echo $result; // => 3
echo '<br />';
echo $arr[$result]; // => hahahhahaha
echo '<br />';
$results = array_rand($arr, 2);
print_r($results); // => Array ( [0] => 2 [1] => 3 )
(4) array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
用法: array_search ($needle , $haystack [, bool $strict = false ] )
$arr = ['a','b','guoyou','hahahhahaha', '34'];
echo array_search(34, $arr); // => 4
echo '<br />';
echo array_search('34', $arr); // => 4
echo '<br />';
var_dump(array_search(34, $arr, true)); // => bool(false)
(5) array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组。
用法: array_reverse ( array $array [, bool $preserve_keys = FALSE ] ) : array
$arr = ['a','b','guoyou','hahahhahaha', '34'];
// 反转数组
$result = array_reverse($arr);
print_r($result);
/*
Array
(
[0] => 34
[1] => hahahhahaha
[2] => guoyou
[3] => b
[4] => a
)
*/
- array_slice, array_splice, array_unique
(1) array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
用法: array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) : array
a. 如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
b. 如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。
c. 注意 array_slice() 默认会重新排序并重置数组的数字索引。你可以通过将 preserve_keys 设为 TRUE 来改变此行为。
<?php
header('content-type: text/html;charset=utf-8');
$arr = ['a','b','guoyou','hahahhahaha', '34'];
// 从下标3之后开始截取数组, 并返回
$slice = array_slice($arr, 3);
print_r($slice);
/*
Array
(
[0] => hahahhahaha
[1] => 34
)
*/
// 从倒数第四个开始截取长度为1的数组,并返回
$a = array_slice($arr, -4, 1);
print_r($a);
/*
Array
(
[0] => b
)
*/
// 从倒数第四个开始截取长度为1的数组,并返回, 且不改变原来的索引下标
$a = array_slice($arr, -4, 1, true);
print_r($a);
/*
Array
(
[1] => b
)
*/
(2) array_splice — 去掉数组中的某一部分并用其它值取代,
用法: array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) : array
$arr = ['a','b','guoyou','hahahhahaha', '34'];
// 把下标 3,4 的元素替换成新插入的项
array_splice($arr, 3, 2, 'new');
print_r($arr); // => Array ( [0] => a [1] => b [2] => guoyou [3] => new )
// 在下标3的后面插入新的元素
array_splice($arr, 3, 0, 'add');
print_r($arr); // => Array ( [0] => a [1] => b [2] => guoyou [3] => add [4] => new )
(3) array_unique — 移除数组中重复的值
用法: array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array
$arr = ['1','2',1, 2, 1, 34, '34'];
$newArr = array_unique($arr);
print_r($arr);
/*
Array
(
[0] => 1
[1] => 2
[2] => 1
[3] => 2
[4] => 1
[5] => 34
[6] => 34
)
*/
print_r($newArr);
/*
Array
(
[0] => 1
[1] => 2
[5] => 34
)
*/
网友评论