一、数组的定义与分类:数组元素是由键名与值组成
数组定义与分类结构图
数组是键值对的集合 |
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>';
}
?>