PHP学习——16 PHP数组(数组的定义、分类、创建、访问、遍历)

本文详细介绍了PHP数组的概念,包括数组的定义、分类,讲解了如何创建和访问数组,并重点探讨了数组的遍历方法及其相关函数,帮助读者全面掌握PHP数组操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组的定义与分类:数组元素是由键名与值组成

数组定义与分类结构图
数组是键值对的集合1.键1.整数
2.字符串
2.值1.标量1.整数型
2.浮点型
3.字符串型
4.布尔型
2.复合1.数组(多维数组)
2.对象
数组按键名类型分为1.索引数组键名默认是从零顺序递增的整数
可自定义键名,如果重复,后面覆盖前面的
2.关联数组键名是字符串,用引号包装
如果重复,后面覆盖前面
<?php 
// 数组是键值对的有序集合
// 数组的键名,必须是整数或者字符串,如果不是,将会自动转化为这两种类型
// 创建一个索引数组
// 1.默认索引数组:键名是从0开始递增的
// $arr = ['html','css','javascript','php'];
// $arr = ['html',5=>'css','javascript','php'];
// Array
// (
//     [0] => html
//     [5] => css
//     [6] => javascript
//     [7] => php
// )
// $arr = ['html',3.8=>'css','javascript','php'];
// Array
// (
//     [0] => html
//     [3] => css
//     [4] => javascript
//     [5] => php
// )
// $arr = ['html',true=>'css','javascript','php'];
// Array
// (
//     [0] => html
//     [1] => css   // true被转化为1
//     [2] => javascript
//     [3] => php
// )
$arr = ['html',false=>'css','javascript','php'];
// Array
// (
//     [0] => css   // false被转化为0,键名相同,后面的值覆盖前面的值
//     [1] => javascript
//     [2] => php
// )
echo '<pre>';
print_r($arr);
echo '</pre>';
echo '<hr>';

// 2.关联数组:键名是自定义的字符串
$arr1 = ['name'=>'peter','age'=>28,'sex'=>'male'];
echo '<pre>';
print_r($arr1);
echo '</pre>';
// Array
// (
//     [name] => peter
//     [age] => 28
//     [sex] => male
// )
?>

二、数组的创建与访问:3种创建方法与2种访问方式

数组的创建与访问 2-1
1.创建1.初始化创建
2.直接给元素赋值创建
3.先声明空数组,再添加
2.访问1.整体访问:print_r($array),var_dump($array)
2.逐个访问:echo $array[$key],var_dump($array[$key],可同时访问多个)
3.数组指针current():获取指针当前位置的元素的值
key():获取指针当前元素的键名(索引)
next():指针移动到下一个元素
prev():指针移动到上一个元素
end():指针移动到最后一个元素
reset():指针复位到第一个元素
<?php 
// 1.创建
// 初始化创建一个索引数组
$arr1 = ['html','css','javascript'];
echo '<pre>';
print_r($arr1);
echo '</pre>';
// Array
// (
//     [0] => html
//     [1] => css
//     [2] => javascript
// )
// 初始化创建一个关联数组
$arr2 = ['a'=>'html','b'=>'css','c'=>'javascript'];
echo '<pre>';
print_r($arr2);
echo '</pre>';
// Array
// (
//     [a] => html
//     [b] => css
//     [c] => javascript
// )

// 赋值的同时,创建数组
$arr3['a'] = 'html';
$arr3['s'] = 'css';
echo '<pre>';
print_r($arr3);
echo '</pre>';
// Array
// (
//     [a] => html
//     [s] => css
// )

// 创建空数组,再赋值
$arr4 = [];
$arr4[1] = 10;
$arr4[4] = 40;
$arr4[6] = 60;
echo '<pre>';
print_r($arr4);
echo '</pre>';
// Array
// (
//     [1] => 10
//     [4] => 40
//     [6] => 60
// )

// 2.访问
// 访问某个数值,用[]
echo $arr4[4]; // 40

// 3.指针
$arr5 = ['html','css','javascript'];
echo '<pre>';
print_r($arr5);
echo '</pre>';
echo '当前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
next($arr5);// 指针下移一位
echo '当前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
prev($arr5);// 指针上移一位
echo '当前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
end($arr5);// 指针移动到最后一个元素
echo '当前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
reset($arr5);// 指针复位到第一个元素
echo '当前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
?>

三、数组的遍历

数组的遍历 3-1
1.for循环索引数组和关联数组的遍历
2.while循环
3.foreach循环
4.list与each函数配合list($args...):将数组元素值转为变量
each($arr):将当前元素以数组的方式返回
list和each配合完成遍历
5.遍历方式的选择1.默认索引数组用:for
2.自定义关联数组用:foreach
<?php 
// 1.for循环
$arr = range(1,10);  // 生成一个1-10的索引数组
for($i=0;$i<count($arr);$i++){
	echo $i.'=>'.$arr[$i].'<br>';
}
echo '<hr>';
// 关联数组遍历
$arr2 = ['name'=>'Tom','age'=>23,'job'=>'engineer'];
for($i=0;$i<count($arr2);$i++){
	echo key($arr2).'=>'.current($arr2).'<br>';
	next($arr2);
}

// 2.while循环
$arr3 = range(1,10);  // 生成一个1-10的索引数组
$i=0;
while($i<count($arr3)){
	echo $i.'=>'.$arr[$i].'<br>';
	$i++;
}
echo '<hr>';
// 关联数组遍历
$arr4 = ['name'=>'Tom','age'=>23,'job'=>'engineer'];
while(current($arr4)){
	echo key($arr4).'=>'.current($arr4).'<br>';
	next($arr4);
}

// 3.foreach(索引数组与关联数组遍历)
$arr5 = range(1,10);  // 生成一个1-10的索引数组
foreach($arr5 as $key=>$value){
	echo $key.'=>'.$value.'<br>';
}

// 4.list与each函数配合
// list是语言结构,其作用类似于javascript的es6语法的结构赋值
// list的功能是将数组元素转为变量
// 1.数组必须是键名从0开始递增的索引数组,不能是关联数组
// 2.list的参数,不一定要和数组元素一一对应,不对应的变量就自动忽略
$arr6 = range(1,5);
echo '<pre>';
print_r($arr6);
echo '</pre>';
// Array
// (
//     [0] => 1
//     [1] => 2
//     [2] => 3
//     [3] => 4
//     [4] => 5
// )
list($a,$b,$c,,$e) = $arr6;
// 上面使用空的占位符(两个逗号)屏蔽了元素4,即数组的第4个元素
echo $a.' ',$b.' ',$c.' ',$e.' ';

// each()可以遍历任何数组,将当前数组的当前指针指向的元素以默认索引键值和关联键值并存的数组形式返回,并自动下移数组指针
$arr7 = ['合肥','哈尔冰','广州'];
echo '<pre>';
print_r(each($arr7));
echo '</pre>';
// Array
// (
//     [1] => 合肥
//     [value] => 合肥
//     [0] => 0
//     [key] => 0
// )
echo '<pre>';
print_r(each($arr7));
echo '</pre>';
// Array
// (
//     [1] => 哈尔冰
//     [value] => 哈尔冰
//     [0] => 1
//     [key] => 1
// )

// 返回结果说明:
// 返回的是四个元素的数组
// 0和1是键名对应的是元素索引表示方法,这个特征是个list处理。key和value对应的是元素的关联表示方法

// 用list()结构和each()配合完成数组的遍历操作
$arr8 = ['name'=>'Tom','age'=>28,'job'=>'engineer'];
echo '<pre>';
print_r($arr8);
echo '</pre>';
// Array
// (
//     [name] => Tom
//     [age] => 28
//     [job] => engineer
// )
reset($arr8);
while(list($key,$value)=each($arr8)){
	echo $key.'=>'.$value.'<br>';
}
reset($arr8);
while($array = each($arr8)){
	echo $array['key'].'=>'.$array['value'].'<br>';
}
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值