文章目录
- 友链
- 数组函数
- 数组指针函数
- 判断 - 键值对
- 数组字符串转换
- 数组更改
- 基础
- 1. 增 - array_unshift() 向数组插入新元素
- 2. 删 - array_shift() 删除数组中的第一个元素,并返回被删除元素的值
- 3. 删 - array_unique() 删除数组中重复的值
- 4. 改 - array_splice() 把数组中的指定元素去掉并用其它值取代
- 5. 改 - 替换 array_replace() 使用后面数组的值替换第一个数组的值
- 6. 改 - 逆转 array_reverse() 将原数组中的元素顺序翻转,创建新的数组并返回
- 7. 改 - 合并 array_merge() 把两个数组合并为一个数组
- 8. 查 - array_search() 在数组中搜索给定的值,如果成功则返回相应的键名
- 9. 查 - array_slice() 返回数组中的选定部分
- 10. 计算 - array_product() 计算数组中所有值的乘积
- 11. 计算 - array_sum() 返回数组中所有值的和
- 参考文件
友链
数组函数
数组指针函数
基础
1. count() | sizeof():获取数组长度
$cars = array("My","Name","Is","Perter");
echo count($cars); // 4
echo sizeof($arr); // 上述等价
2. in_array() 检查数组中是否存在指定的值
$people = array("Bill", "Steve", "Mark", "David");
if (in_array("Mark", $people)){ // 匹配已找到
echo "匹配已找到";
}else{
echo "匹配未找到";
}
进阶
1. 数组指针集锦 current/next/prev/reset/end
$arr = array("Perter","Joe","Alison","Mary","Jack");
1、current() | pos() 返回数组中的当前元素
echo current($arr); // Perter
echo pos($arr); // Perter
2. next() 将数组中的内部指针向后移动一位。
echo next($arr); // Joe
3. prev() 将数组的内部指针倒回一位。
echo current($arr); // Peter
echo next($arr); // Joe
echo prev($arr); // Peter
4. reset() 将数组的内部指针指向第一个元素。
echo next($arr); // Joe
echo reset($arr); // Perter
5. end() 将数组的内部指针指向最后一个元素。
echo end($arr); // Jack
判断 - 键值对
基础
1.key() 函数返回数组内部指针当前指向元素的键名
该函数与 current() 类似,只是返回的结果不同。current() 函数返回的是元素的值,而 key() 函数返回的是元素的键名。
$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple');
// fruit1 fruit2 fruit3 fruit4 fruit5
while ($fruit_name = current($array)) {
echo key($array), " ";
next($array);
}
2. array_keys() 返回包含数组中所有键名的一个新数组
语法:array_keys(array,value,strict)
1. 只有一个参数
$a = array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a)); // Array ( [0] => Volvo [1] => BMW [2] => Toyota )
2. 使用 value 参数 : 如果提供了第二个参数,则只返回键值为该值的键名
$a = array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a,"Highlander"));//Array ( [0] => Toyota )
3. 如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型
$a = array(10,20,30,"10");
print_r(array_keys($a,"10",false)); //Array ( [0] => 0 [1] => 3 )
print_r(array_keys($a,"10",true)); // Array ( [0] => 3 )
3. array_key_exists() 检查某个数组中是否存在指定的键名
1.语法:array_key_exists(key,array)
2.例子
$a = array("Volvo"=>"XC90","BMW"=>"X5");
if (array_key_exists("Volvo",$a)) {// 键存在!
echo "键存在!";
}else{
echo "键不存在!";
}
4. array_search() 函数在数组中搜索某个键值,并返回对应的键名
$arr=array("A"=>"red","B"=>"green","C"=>"blue");
echo array_search("red",$arr);
5. array_values() 返回数组的所有值(非键名)
被返回的数组将使用数值键,从 0 开始并以 1 递增
$a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA");
print_r(array_values($a)); //Array([0] => Bill [1] => 60 [2] => USA)
6. array_count_values() 用于统计数组中所有值出现的次数
$arr = array("Cat","Cat","Tiger","Rabbit","Dog","Dog","Dog");
print_r(array_count_values($arr)); // Array( [Cat] => 2 [Tiger] => 1 [Rabbit] => 1 [Dog] => 3)
7. array_flip 反转数组中所有的键以及它们关联的值
$arr = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$result=array_flip($arr);
print_r($result); // Array ( [red] => a [green] => b [blue] => c [yellow]
进阶
1. extract() 对于数组中的每个元素,键名用于变量名,键值用于变量值
语法:
第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
extract(array,extract_rules,prefix)
1. 用法一
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
// $a = Cat; $b = Dog; $c = Horse
echo "\$a = $a; \$b = $b; \$c = $c";
2. 用法二
$a = 'Original';
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array, EXTR_PREFIX_SAME, 'dup');
// $a = Original; $b = Dog; $c = Horse; $dup_a = Cat;
echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";
解析:
extract() 是一个非常好用的函数,它的主要作用是将数组展开,键名作为变量名,元素值为变量值,例如很方便的提取$_POST或者$_GET的元素,不需要一一赋值。
3. 用法三
extract($_POST);
// 相当于$username = $_POST['username'];
// $password = $_POST['password'];
2. compact() 创建一个包含变量名和它们的值的数组
语法:compact(var1,var2...)
var1:必需。可以是带有变量名的字符串,或者是变量数组。
var2:可选。可以是带有变量名的字符串,或者是变量数组。允许多个参数。
注释:任何没有变量名与之对应的字符串都被略过。
1. 创建一个包含变量名和它们的值的数组
$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$result = compact("firstname", "lastname", "age");
print_r($result); // Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )
2. 使用不匹配变量的字符串,以及一个变量名数组
$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$result = compact("firstname", "lastname", "age");
print_r($result); // Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )
其他
1. range() 函数用于在一次操作中给一组变量赋值
语法:range(low,high,step) // step可选。规定元素之间的步进制。默认是 1。
注释:该函数返回一个包含从 low 到 high 之间的元素的数组。如果 low 参数大于 high 参数,则创建的数组将是从 high 到 low。
1. 创建一个包含从 "0" 到 "5" 之间的元素范围的数组
$number = range(0,5);
print_r ($number); // Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
2. 返回包含 "0" 至 "50" 之间并以 10 递增的元素的数组
$number = range(0,50,10);
print_r ($number); // Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 )
3. 使用字母 - 返回包含从 "a" 到 "d" 之间的元素的数组
$letter = range("a","d");
print_r ($letter); // Array ( [0] => a [1] => b [2] => c [3] => d )
2. list() 把数组中的值赋给一组变量
$info = array('coffee', 'brown', 'caffeine');
1. 列出所有变量
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n"; // // coffee is brown and caffeine makes it special.
2.列出他们的其中一个
list($drink, , $power) = $info;
echo "$drink has $power.\n";// coffee has caffeine.
3.或者让我们跳到仅第三个
list( , , $power) = $info;
echo "I need $power!\n"; // I need caffeine!
4.list() 不能对字符串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
5. 可以和数组嵌套使用
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c); int(1) int(2) int(3)
数组字符串转换
1. emplode():把字符串打散为数组
$str = "Hello world. I love Shanghai!";
// Array ( [0] => Hello [1] => world. [2] => I [3] => love [4] => Shanghai! )
print_r (explode(" ",$str));
2. Implode() :把数组元素组合为字符串
$arr = array('Hello','World!','I','love','Shanghai!');
// Hello World! I love Shanghai!
echo implode(" ",$arr);
数组更改
基础
1. 增 - array_unshift() 向数组插入新元素
$a=array("a"=>"red","b"=>"green");
array_unshift($a,"blue");
print_r($a); // Array( [0] => blue [a] => red [b] => green )
2. 删 - array_shift() 删除数组中的第一个元素,并返回被删除元素的值
删除数组中的第一个元素(red),并返回被删除元素的值
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($a); // red
print_r ($a); // Array ( [b] => green [c] => blue )
3. 删 - array_unique() 删除数组中重复的值
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a)); // Array ( [a] => red [b] => green )
4. 改 - array_splice() 把数组中的指定元素去掉并用其它值取代
语法:
array_splice(array1,start,length,array2)
array1:必需
start:必需,规定删除元素的开始位置
length:可选,数值,规定被移除的元素个数,也是被返回数组的长度
array2:可选,规定带有要插入原始数组中元素的数组
如果只有一个元素,则可以设置为字符串,不需要设置为数组
举例:
1. 从数组中移除元素,并用新元素取代它(从第一个元素开始移除2个元素,并替换)
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
array_splice($a1,0,2,$a2);
print_r(array_splice($a1,0,2,$a2)); // Array ( [a] => red [b] => green ) 返回被移除的元素
print_r($a1); // Array ( [0] => purple [1] => orange [c] => blue [d] => yellow )
5. 改 - 替换 array_replace() 使用后面数组的值替换第一个数组的值
使用:可以向函数传递一个数组,或者多个数组。
case1:如果一个键存在于第一个数组 array1 同时也存在于第二个数组 array2,第一个数组 array1 中的值将被第二个数组 array2 中的值替换。如果一个键仅存在于第一个数组 array1,它将保持不变。(详见下面的实例 2)
case2:如果一个键存在于第二个数组 array2,但是不存在于第一个数组 array1,则会在第一个数组 array1 中创建这个元素。(详见下面的实例 3)
1.使用第二个数组($a2)的值替换第一个数组($a1)的值
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_replace($a1,$a2)); // Array ( [0] => blue [1] => yellow )
2.如果一个键存在于 array1 中同时也存在于 array2 中,第一个数组的值将被第二个数组中的值替换
$a1=array("a"=>"red","b"=>"green");
$a2=array("a"=>"orange","burgundy");
print_r(array_replace($a1,$a2)); // Array ( [a] => orange [b] => green [0] => burgundy )
3. 如果一个键仅存在于第二个数组中
$a1=array("a"=>"red","green");
$a2=array("a"=>"orange","b"=>"burgundy");
print_r(array_replace($a1,$a2)); // Array ( [a] => orange [0] => green [b] => burgundy )
6. 改 - 逆转 array_reverse() 将原数组中的元素顺序翻转,创建新的数组并返回
$a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
print_r(array_reverse($a)); // Array ( [c] => Toyota [b] => BMW [a] => Volvo )
7. 改 - 合并 array_merge() 把两个数组合并为一个数组
$a1 = array("red","green");
$a2 = array("blue","yellow");
print_r(array_merge($a1,$a2)); // Array ( [0] => red [1] => green [2] => blue [3] => yellow )
8. 查 - array_search() 在数组中搜索给定的值,如果成功则返回相应的键名
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a); // a
9. 查 - array_slice() 返回数组中的选定部分
定义和用法
array_slice(array,start,length,preserve)
start:必需。规定取出元素的开始位置。 0 = 第一个元素。 如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。
length:可选。数值。规定被返回数组的长度。
preserve:可选。规定函数是保留键名还是重置键名。可能的值:true - 保留键名 / false - 默认。重置键名
1. 从数组的第三个元素开始取出,并返回数组中的其余元素
$arr = array("red","green","blue","yellow","brown");
print_r(array_slice($arr,2)); // Array ( [0] => blue [1] => yellow [2] => brown )
2. 从数组的第二个元素开始取出,并仅返回两个元素
$a = array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2)); // Array ( [0] => green [1] => blue )
10. 计算 - array_product() 计算数组中所有值的乘积
$a=array(5,5);
echo(array_product($a)); // 25
11. 计算 - array_sum() 返回数组中所有值的和
$a=array(5,15,25);
echo array_sum($a); // 45
参考文件
[1] PHP在线运行网站