您当前的位置: 首页 >  ar

王佳斌

暂无认证

  • 2浏览

    0关注

    821博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PHP5 - 数组 (数值数组 / 关联数组 / 多维数组) 遍历及 array API

王佳斌 发布时间:2020-02-18 19:12:22 ,浏览量:2

声明

在 PHP5 中使用 array() 函数创建声明一个数组:

$arr = array('one', 'two', 'three');

其数组的类型有三种:

  1. 数值数组: 带有数字 ID 键的数组。
  2. 关联数组: 带有指定的键的数组(每个键关联一个值)。
  3. 多维数组: 包含一个或多个数组的数组(二三维)。
获取数组长度

在开始谈三种数组类型前,先来看一下如何获取数组长度。在 PHP5 中并不是使用 .length 获取,因为 PHP5 中数组不是对象(Object)。

使用 count() 函数来统计数组并返回长度:

# 声明
$arr = array('one', 'two', 'three');

# 返回长度
echo count($arr);//3
一、数值数组

其实就是普通的数组,即 自动分配 ID 键(从 0 开始) :

# 自动分配 ID 键
$arr = array('one', 'two', 'three');

# 手动手配 ID 键
$arr[3] = 'four';
二、关联数组

所谓关联数组,指的是你 分配给数组的指定的键 的数组,有点类似对象的键值对。

# 第一种方式
$arr = array('one' => '1', 'two' => '2');

# 第二种方式
$arr['one'] = '1';
$arr['two'] = '2';
三、多维数组

简单来说就是 数组中嵌套数组,它包含一个或多个数组的数组。

# 多维数组
$arr = array(
    array('one'),
    array('two'),
    array('three')
);

# 格式化数组显示
print '
';
print_r($arr);

打印结果: 在这里插入图片描述 通过观察数组维度,然后以索引下标方式访问。二维数组需要两个索引来选取元素,反之亦然:

# 二维数组
$arr = array(
    array('one'),
    array('two'),
    array('three')
);

# 选取 'two' 元素
echo $arr[1][0];//two

同样,三维数组则需要 array[一维下标][二维下标][三维下标] 选取元素。

遍历数组

遍历数组的需求很常见,下面我们分别遍历三种数组类型。

使用 for 循环来遍历【数值数组】:

# 数值数组
$arr = array('one', 'two', 'three');

# 遍历
for($i = 0; $i  $value){
    echo '索引:' . $key . '——————' . '值:' .$value;
}
// 索引:0——————值:one索引:1——————值:two索引:2——————值:three

使用 foreach 来遍历【关联数组】(注意:PHP5 的 foreach 会拷贝数组建立副本):

语法:foreach($数组变量 as [$下标=>] $值){} 解释:通过 $下标 访问元素下标,通过 $值 访问元素值。

[$下标 =>] 是可选参数。视情况而定。比如关联数组就需要,而数字数组就不需要。

# 关联数组
$arr = array('one' => '1', 'two' => '2');

# 遍历数组
foreach($arr as $key => $value){
    echo '键:' . $key . '—————' . '值:' . $value;
}
// 键:one—————值:1键:two—————值:2

通过 嵌套foreach 遍历多维数组,说白了就是逐层遍历:

# 二维数组
$arr = array(
    0 => array('name' => 'Vue'),
    1 => array('name' => 'React'),
);

# 1. 首先遍历一维数组
# 2. 然后再遍历二维数组
# 注意:如果是三维以上则再次嵌套即可(但不建议三层以上)
foreach($arr as $value){
    foreach($value as $value2){
        echo $value2 . '';
    }
}
// Vue
// React

如果你想了解遍历原理,请访问:https://wangjiabin.blog.csdn.net/article/details/104379573

副本

使用 foreach 遍历数组时,其实系统为我们建立了一个副本,遍历的结果 不会影响到原数组。

# Array
$arr = array(1,2,3);

# 遍历
foreach($arr as $value){
    $value += 1;//尝试改变
    echo $value;//234
}

# 查看是否改变了元素组
print '
';
print_r($arr);

在这里插入图片描述

Array API 函数描述array()创建数组。array_change_key_case()返回其键均为大写或小写的数组。array_chunk()把一个数组分割为新的数组块。array_combine()通过合并两个数组来创建一个新数组。array_count_values()用于统计数组中所有值出现的次数。array_diff()返回两个数组的差集数组。array_diff_assoc()比较键名和键值,并返回两个数组的差集数组。array_diff_key()比较键名,并返回两个数组的差集数组。array_diff_uassoc()通过用户提供的回调函数做索引检查来计算数组的差集。array_diff_ukey()用回调函数对键名比较计算数组的差集。array_fill()用给定的值填充数组。array_filter()用回调函数过滤数组中的元素。array_flip()交换数组中的键和值。array_intersect()计算数组的交集。array_intersect_assoc()比较键名和键值,并返回两个数组的交集数组。array_intersect_key()使用键名比较计算数组的交集。array_intersect_uassoc()带索引检查计算数组的交集,用回调函数比较索引。array_intersect_ukey()用回调函数比较键名来计算数组的交集。array_key_exists()检查给定的键名或索引是否存在于数组中。array_keys()返回数组中所有的键名。array_map()将回调函数作用到给定数组的单元上。array_merge()把一个或多个数组合并为一个数组。array_merge_recursive()递归地合并一个或多个数组。array_multisort()对多个数组或多维数组进行排序。array_pad()用值将数组填补到指定长度。array_pop()将数组最后一个单元弹出(出栈)。array_product()计算数组中所有值的乘积。array_push()将一个或多个单元(元素)压入数组的末尾(入栈)。array_rand()从数组中随机选出一个或多个元素,并返回。array_reduce()用回调函数迭代地将数组简化为单一的值。array_reverse()将原数组中的元素顺序翻转,创建新的数组并返回。array_search()在数组中搜索给定的值,如果成功则返回相应的键名。array_shift()删除数组中的第一个元素,并返回被删除元素的值。array_slice()在数组中根据条件取出一段值,并返回。array_splice()把数组中的一部分去掉并用其它值取代。array_sum()计算数组中所有值的和。array_udiff()用回调函数比较数据来计算数组的差集。array_udiff_assoc()带索引检查计算数组的差集,用回调函数比较数据。array_udiff_uassoc()带索引检查计算数组的差集,用回调函数比较数据和索引。array_uintersect()计算数组的交集,用回调函数比较数据。array_uintersect_assoc()带索引检查计算数组的交集,用回调函数比较数据。array_uintersect_uassoc()带索引检查计算数组的交集,用回调函数比较数据和索引。array_unique()删除数组中重复的值。array_unshift()在数组开头插入一个或多个元素。array_values()返回数组中所有的值。array_walk()对数组中的每个成员应用用户函数。array_walk_recursive()对数组中的每个成员递归地应用用户函数。arsort()对数组进行逆向排序并保持索引关系。asort()对数组进行排序并保持索引关系。compact()建立一个数组,包括变量名和它们的值。count()计算数组中的元素数目或对象中的属性个数。current()返回数组中的当前元素。each()返回数组中当前的键/值对并将数组指针向前移动一步。end()将数组的内部指针指向最后一个元素。extract()从数组中将变量导入到当前的符号表。in_array()检查数组中是否存在指定的值。key()从关联数组中取得键名。krsort()对数组按照键名逆向排序。ksort()对数组按照键名排序。list()把数组中的值赋给一些变量。natcasesort()用“自然排序”算法对数组进行不区分大小写字母的排序。natsort()用“自然排序”算法对数组排序。next()将数组中的内部指针向前移动一位。pos()current() 的别名。prev()将数组的内部指针倒回一位。range()建立一个包含指定范围的元素的数组。reset()将数组的内部指针指向第一个元素。rsort()对数组逆向排序。shuffle()把数组中的元素按随机顺序重新排列。sizeof()count() 的别名。sort()对数组排序。uasort()使用用户自定义的比较函数对数组中的值进行排序并保持索引关联。uksort()使用用户自定义的比较函数对数组中的键名进行排序。usort()使用用户自定义的比较函数对数组中的值进行排序。
关注
打赏
1665568777
查看更多评论
立即登录/注册

微信扫码登录

0.0398s