PHP数组函数基础知识

什么是数组?数组就是被命名的用来存储一系列数值的地方。数组array是非常重要的数据类型。相对于其他的数据类型,它更像是一种结构,而这种结果构可以存储一系列数值。数组能够在单一变量名中存储许多值,并且能够通过引用下标号来访问某个值。

在 PHP 中,有三种数组类型:

索引数组 - 带有数字索引的数组

关联数组 - 带有指定键的数组

多维数组 - 包含一个或多个数组的数组

创建数组

array(key => value)
创建索引数组

使用array()函数声明数组。PHP属于弱类型语言相对较灵活和方便,也可以直接是数组的元素值value,不需要键值key,索引是自动分配的(索引从 0 开始)。

例:

array("1" => "百度","2" => "阿里","3" => "腾讯");
或者是不使用键值:
array("百度","阿里","腾讯");
当然也可以写成:
$arr[0] = "百度";
$arr[1] = "阿里";
$arr[2] = "腾讯";

创建关联数组

关联数组和索引数组类似,只是关联数组不能够像索引数组的键名那样只能够为数字,它可以是数值和字符串以及混合形式,判断一个数组是否为关联数组的依据是:数组中的键名是否存在一个不是数字的。不是就是关联。

array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯");

多维数组

array(array(),array()) 二维数组

获得数组的长度 - count() 函数

<?php
$arr = array("百度","阿里","腾讯");
echo count($arr);
?> //结果返回3(说明数组中有三个元素)

遍历数组

输出数组中元素的值。对于索引数组常用for、foreach;对于关联数组常用foreach。使用print_r()函数打印循环后的结果,也可以用var_dump()。

遍历索引数组

遍历并输出索引数组的所有值,可以使用for、 foreach(array_expression as value)、foreach(arrayexpressionaskey => $value) 循环,如下:

使用for循环
<?php
$arr = array("百度","阿里","腾讯");
$arrlen = count($arr);//获取数组的长度
for ($i=0; $i <$arrlen ; $i++) {
    $data[] = $arr[$i];
}
echo "<pre>"; //换行显示
print_r($data);
打印结果显示如下:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 腾讯
)
使用foreach循环
<?php
$arr = array("百度","阿里","腾讯");
foreach ($arr as $value) {
    $data[] = $value;
}
echo "<pre>"; //换行显示
print_r($data);//打印结果和上面一样

注意:data后面有一个数组符号[],为什么呢?

遍历关联数组

遍历并输出关联数组的所有值,可以使用 foreach (array_expression as key=>value) 循环,如下:

<?php
$arr = array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯");
foreach ($arr as $key => $value) {
    $data[$key] = $value;
}
echo "<pre>"; //换行显示
print_r($data);
打印结果显示:
Array
(
    [李彦宏] => 百度
    [马云] => 阿里
    [马化腾] => 腾讯
)

注意到没?此时的data后是[$key]?而不是[]

一个数关联数组一个是数字索引数组,

增加删除数组的元素

在数组元素的尾部增加

array_push(array,value1,value2…) 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。

该函数等于多次调用 array[]=value。

<?php
$arr = array("百度","阿里","腾讯");
array_push($arr,"知乎","微博");
echo "<pre>"; //换行显示
print_r($arr);
打印结果显示:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 腾讯
    [3] => 知乎
    [4] => 微博
)

在数组元素的开始增加

array_unshift(array,value1,value2,value3…) 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。

<?php
$arr = array("百度","阿里","腾讯");
array_unshift($arr,"知乎","微博");
echo "<pre>"; //换行显示
print_r($arr);
打印结果显示:
Array
(
    [0] => 知乎
    [1] => 微博
    [2] => 百度
    [3] => 阿里
    [4] => 腾讯
)

在数组元素的尾部删除

array_pop(array) 函数删除数组中的最后一个元素

<?php
$arr = array("百度","阿里","腾讯");
array_pop($arr);
echo "<pre>"; //换行显示
print_r($arr);
打印结果显示:
Array
(
    [0] => 百度
    [1] => 阿里
)

在数组元素的开始删除

array_shift(array) 函数删除数组中第一个元素 并可以返回被删除元素的值

<?php
$arr = array("百度","阿里","腾讯");
array_shift($arr);
echo "<pre>"; //换行显示
print_r($arr);
打印结果显示:
Array
(
    [0] => 阿里
    [1] => 腾讯
)

移除数组中重复的值

array_unique(array) 函数移除数组中的重复的值,并返回结果数组。

<?php
$arr = array("百度","阿里","腾讯","百度","微博");
$data = array_unique($arr);
echo "<pre>";
print_r($data);
打印结果显示:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 腾讯
    [4] => 微博
)

定位数组元素

搜索数组中存在的值

in_array(search,array,type)检查数组中是否存在指定的值。

如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。如果没有在数组中找到参数,函数返回 false。

<?php
$arr = array("百度","阿里","腾讯");
while (in_array("百度", $arr)) {
    echo "已经找到";
    break;
} //输出已经找到

在数组中根据条件取出一段值: array_slice(array,start,length,preserve)

start 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。

如果该值设置为正数,则从前往后开始取。

如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。

length 可选。数值。规定被返回数组的长度。

如果该值设置为整数,则返回该数量的元素。

如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。

如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。

<?php
$arr = array("百度","阿里","腾讯","知乎","微博");
$data = array_slice($arr,0,4);
echo "<pre>";
print_r($data);
打印结果显示:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 腾讯
    [3] => 知乎
)

array_splice(array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。

<?php
$arr1 = array("百度","阿里","腾讯");
$arr2 = array("知乎","微博");
array_splice($arr1,0,2,$arr2);
echo "<pre>";
print_r($arr1);
打印结果显示:
Array
(
    [0] => 知乎
    [1] => 微博
    [2] => 腾讯
)

数组合并、拆分、比较

array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。

<?php
$arr1 = array("百度","阿里","腾讯");
$arr2 = array("知乎","微博");
$data = array_merge($arr1,$arr2);
echo "<pre>";
print_r($data);
打印结果显示:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 腾讯
    [3] => 知乎
    [4] => 微博
)

递归追加数组

array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并到一起,形成一个联合的数组。两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时该函数会采取不同的处理方法。array_merge()会覆盖前面存在的键/值对,将其替换为当前输入数组中的键/值对,而array_merge_recursive()将两个值合并在一起,形成一个新的数组并以原有的键作为数组名。其形式为:

$arr= array(‘one‘=>‘C‘, ‘one‘=>‘B‘);
$arr1= array(‘three‘=>‘1‘, ‘one‘=>‘2‘);
$arr2= array_merge_recursive($arr, $arr1);
echo "<pre>";
print_r($arr2);
打印结果显示:
Array
(
    [one] => Array
        (
            [0] => B
            [1] => 2
        )

    [three] => 1
)

合并两个数组

array_combine()函数会生成一个新数组,这个数组由一组提交的键和对应的值组成,其形式为:

$arr= array(‘A‘, ‘B‘);
$arr1= array(‘1‘, ‘2‘);
$arr2= array_combine($arr, $arr1);
echo "<pre>";
print_r($arr2);
打印结果显示:
Array
(
    [A] => 1
    [B] => 2
)

求数组的交集

array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

$arr= array(‘A‘, ‘B‘, ‘C‘, ‘D‘);
$arr1= array(‘A‘, ‘B‘, ‘E‘);
$arr2= array(‘A‘, ‘F‘, ‘D‘);
$arr3= array_intersect($arr, $arr1, $arr2);
echo "<pre>";
print_r($arr3);
打印结果显示:
Array
(
    [0] => A
)

注意:只有在两个元素有相同的数据类型时,array_intersect()才会认为它们相等。

求关联数组的交集

array_intersect_assoc()与array_intersect()基本相同,只不过它在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才被返回到结果数组中。其形式如下:

$arr= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘c‘=>‘C‘, ‘d‘=>‘D‘);
$arr1= array(‘a‘=>‘A‘, ‘c‘=>‘B‘, ‘E‘);
$arr2= array(‘a‘=>‘A‘, ‘b‘=>‘F‘, ‘d‘=>‘B‘);
$arr3= array_intersect_assoc($arr, $arr1, $arr2);
echo "<pre>";
print_r($arr3);
打印结果显示:
Array
(
    [a] => A
)

求关联数组的差集

函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键,因此,只在第一个数组中出现而不在其他输入数组中出现的键/值对才会被返回到结果数组中。其形式如下:

$arr= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘c‘=>‘C‘, ‘d‘=>‘D‘);
$arr1= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘e‘=>‘E‘);
$arr3= array_diff_assoc($arr, $arr1);
echo "<pre>";
print_r($arr3);
打印结果显示:
Array
(
    [c] => C
    [d] => D
)

其他有用的数组函数

返回一组随机的键 array_rand()函数将返回数组中的一个或多个键。其形式为:

$arr= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘c‘=>‘C‘, ‘d‘=>‘D‘);
$arr1= array_rand($arr, 2);
echo "<pre>";
print_r($arr1);
打印结果显示:
 Array
(
    [0] => c
    [1] => d
) //每次刷新显示的结果都不一样

对数组中的值求和

array_sum()函数将数组内的所有值加在一起,返回最终的和,其形式如下:

$arr= array(‘A‘, 32, 12, ‘B‘);
$count= array_sum($arr);
echo "<pre>";
print_r($count);
打印结果显示:
44

如果数组中包含其他数据类型(例如字符串),这些值将被忽略。

划分数组

array_chunk()函数将数组分解为一个多维数组,这个多维数组由多个包含size个元素的数组所组成。其形式如下:

$arr= array(‘A‘, ‘B‘, ‘C‘, ‘D‘);
$arr1= array_chunk($arr, 2);
echo "<pre>";
print_r($arr1);
打印结果显示:
Array
(
    [0] => Array
        (
            [0] => A
            [1] => B
        )

    [1] => Array
        (
            [0] => C
            [1] => D
        )

)

处理数组时可调用函数有

array_filter(*array*,*callbackfunction*);
array_intersect_uassoc(*array1*,*array2*,*array3*...,*myfunction*)
array_intersect_ukey(*array1*,*array2*,*array3*...,*myfunction*)
array_reduce(*array*,*myfunction*,*initial*)
array_walk(*array*,*myfunction*,*userdata*...)
……

–end

时间: 2024-10-13 16:32:11

PHP数组函数基础知识的相关文章

PHP基础入门(四)---PHP数组实用基础知识

PHP数组 数组是特殊的变量,它可以同时保存一个以上的值. ***关键词:数组基础.数组遍历.超全局数组.数组功能.数组函数. 下面来和大家分享一下有关PHP的数组基础知识,希望对你PHP的学习有所帮助~ 一.PHP数组基础部分 一PHP数组的分类 按照下标的不同,PHP数组分为关联数组和索引数组:索引数组:下标从0开始,依次增长关联数组:下标为字符串格式,每个下标字符串与数组的值一一关联对应(类似对象的键值对) 代码演示: 1 $arr1 = array(1,2,3,4,5,6,7);//索引

10分钟学会Python函数基础知识

看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行.Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用. 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验).我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可.那么,这样就提高了代码的

10分钟学会 Python 函数基础知识

一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行.Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用. 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验).我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可.那么,这样就提高了代码的复用率了,整体代码看起来比较简练,没有那么臃肿了. 函数在Python中是最基本的程序结构,用来最大化地

教你快速学会 Python 函数基础知识

一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行.Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用. 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验).我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可.那么,这样就提高了代码的复用率了,整体代码看起来比较简练,没有那么臃肿了. 函数在Python中是最基本的程序结构,用来最大化地

JavaScript中数组的基础知识和相关方法

  数组基础 数组是大多数语言里面最常见的一种数据结构,它是一个有序的值列表. 创建数组 1.创建字面量数组 let arr=[]; 2.创建构造函数数组 let arr=new Array(); 注:无论是字面量形式数组,还是构造函数数组,当我们要使用typeof打印数据类型时,都会返回一个object 例: let arr1 = []; let arr2 = new Array(); console.log(typeof arr1);//object console.log(typeof a

通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用

  前  言  PHP     学习了好久的PHP,今天做一个可以后台交互的登录页和注册页,没做什么判断,简单的了解一下. 具体的内容分析如下: ① PHP中的数据传输-->>由注册页传输给注册页后台-->>注册页后台经过转码保存实例化的文件 ② 在登录页输入账户密码,点击登录时,获得触发函数:获得由后台传输过来的true或者false---转换页面或者弹出输入错误.    登录页后台获取保存账户密码的实例化文件,通过转码,if判断之后传输给前台登录页TURE或者FALSE. 总共

数组相关基础知识

filter() 返回数组中的满足回调函数中指定的条件的元素. array1.filter(callbackfn[, thisArg]) 对数组array1中的每个元素调用回调函数callbackfn方法,该方法会返回一个在回调函数中返回true的元素的新的集合.可选参数thisArg可以替换回调函数中的this对象 https://technet.microsoft.com/zh-cn/ff679973 sort()  用于对数组的元素进行排序.默认是按字母顺序. //按照数值大小排序 <sc

python — 函数基础知识(一)

目录 1 面向过程编程与函数式编程 2 函数的基本结构 3 函数的参数 1 面向过程编程与函数式编程 截至目前我们所接触.所写的编程为:面向过程式编程[可读性差/可重用性差] # 面向过程编程 user_input = input('请输入角色:') if user_input == '管理员': import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMETex

Javascript函数基础知识1

一.function+name function fun1(a,b){ return a+b; } 1.函数没有返回值类型 2.参数列表不需要类型,相当于函数的入口 3.return后边不能有语句,有也不执行,相当于函数的出口 4.函数其实也是一种数据类型(function类型),也可以作为参数传递 二.定义函数的三种类型(1,2比较常用) 1.function语句式 function func1(){} 2.函数的直接量 var func2=function(){} 3.function构造式