PHP基础 - 函数总结(一) - 数组

本文详细介绍了PHP中处理数组的各种函数,包括基础操作如count()、in_array()、current()、next(),以及键值对处理、数组指针、数组转换、数组更改等进阶功能,如array_search()、array_unique()、array_splice()、array_replace()等,帮助开发者全面理解PHP数组的使用方法。
摘要由CSDN通过智能技术生成

文章目录

友链

[1] 字符串函数
[2] 其他常用函数

数组函数

数组指针函数

基础
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");

1current() | 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 中创建这个元素。(详见下面的实例 31.使用第二个数组($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在线运行网站

array_change_key_case -- 返回字符串键名全为小写或大写的数组 array_chunk -- 将一个数组分割成多个 array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_count_values -- 统计数组中所有的值出现的次数 array_diff_assoc -- 带索引检查计算数组的差集 array_diff_key -- 使用键名比较计算数组的差集 array_diff_uassoc -- 用用户提供的回调函数做索引检查来计算数组的差集 array_diff_ukey -- 用回调函数对键名比较计算数组的差集 array_diff -- 计算数组的差集 array_fill -- 用给定的值填充数组 array_filter -- 用回调函数过滤数组中的单元 array_flip -- 交换数组中的键和值 array_intersect_assoc -- 带索引检查计算数组的交集 array_intersect_key -- 使用键名比较计算数组的交集 array_intersect_uassoc -- 带索引检查计算数组的交集,用回调函数比较索引 array_intersect_ukey -- 用回调函数比较键名来计算数组的交集 array_intersect -- 计算数组的交集 array_key_exists -- 检查给定的键名或索引是否存在于数组中 array_keys -- 返回数组中所有的键名 array_map -- 将回调函数作用到给定数组的单元上 array_merge_recursive -- 递归地合并一个或多个数组 array_merge -- 合并一个或多个数组 array_multisort -- 对多个数组或多维数组进行排序 array_pad -- 用值将数组填补到指定长度 array_pop -- 将数组最后一个单元弹出(出栈) array_product -- 计算数组中所有值的乘积
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值