1、数组的分类
1.1 索引数组
// 索引数组: 位置敏感,访问严重依赖元素在数组中的位置
// 键是数值的索引,表示元素的位置
//定义方法1:
$user_arr1=[0=>'小明',1=>'小王',2=>'小花',3=>'小丽'];
//定义方法2:
$user_arr2=['小明','小王','小花','小丽'];
//定义方法3:
$user_arr3[] = '小明';
$user_arr3[] = '小王';
$user_arr3[] = '小花';
$user_arr3[] = '小丽';
//注意:如果未定义 $user_arr3=[],将自动创建,否则以追加的方式添加;
echo $user_arr1[2];
echo $user_arr2[2];
echo $user_arr3[2];
//输出:小花
1.2 关联数组
// 关联数组,键的类型是字符串,应该有语义化的
// 关联数组的元素访问与元素在数组中的位置无关,只与它的键名相关
//定义方法1:
$user_arr1 = ['id'=>1, 'name'=>'小明','age'=>18,'email'=>'xiaoming@php.cn'];
//定义方法2:
$user_arr2['id'] = 1;
$user_arr2['name'] = '小明';
$user_arr2['age'] = 18;
$user_arr2['email'] = 'xiaoming@php.cn';
//注意:如果未定义 $user_arr2=[],将自动创建,否则以追加的方式添加;
echo $user_arr1['name'];
echo $user_arr2['name'];
//输出:小明
2、数组的访问
2.1 通过索引/键名直接访问
//索引数组
$user_arr1 = [1, '小明', 18,'xiaoming@php.cn'];
//关联数组
$user_arr2 = ['id'=>'1', 'name'=>'小明', 'age'=>18,'email'=>'xiaoming@php.cn'];
echo $user_arr1[1];
echo $user_arr2['name'];
//以上均输出:小明
2.2 通过数组指针访问
//key():返回数组中的当前元素的键key
//current() - 返回数组中的当前元素的值
//end() - 将内部指针指向数组中的最后一个元素,并输出
//next() - 将内部指针指向数组中的下一个元素,并输出
//prev() - 将内部指针指向数组中的上一个元素,并输出
//reset() - 将内部指针指向数组中的第一个元素,并输出
$user_arr = ['id'=>1, 'name'=>'小明','age'=>18,'email'=>'xiaoming@php.cn'];
echo key($user_arr).':'.current($user_arr).'<br>';
next($user_arr);
echo key($user_arr).':'.current($user_arr).'<br>';
next($user_arr);
echo key($user_arr).':'.current($user_arr).'<br>';
next($user_arr);
echo key($user_arr).':'.current($user_arr).'<br>';
// 输出:
// id:1
// name:小明
// age:18
// email:xiaoming@php.cn
// 注意:如果要回到第一个元素,需要使用指针复位: reset()
// reset($user_arr);
2.3 通过while()
循环访问
while (true) {
echo key($user_arr).':'.current($user_arr).'<br>';
if (next($user_arr)){
continue;
}else{
break;
}
}
2.4 通过for()
循环访问(适用索引方式的数组)
$user_arr = [1,'小明',18,'xiaoming@php.cn'];
for ( $i = 0; $i < count($user_arr); $i++ ){
echo $user_arr[$i] . '<br/>';
}
// 输出:
// 1
// 小明
// 18
// xiaoming@php.cn
2.5 通过foreach循环
访问(索引/关联数组均适用)
$user_arr = ['id'=>1, 'name'=>'小明','age'=>18,'email'=>'xiaoming@php.cn'];
//输出值
foreach ( $user_arr as $value ){
echo $value . '<br/>';
}
// 输出:
// 1
// 小明
// 18
// xiaoming@php.cn
//输出键名+值
foreach ( $user_arr as $key => $value ){
echo $key . ':' . $value . '<br/>';
}
// 输出:
// id:1
// name:小明
// age:18
// email:xiaoming@php.cn
2.6 通过foreach
+ list()
循环访问多维数组
$users = [
['id' => '101', 'name' => '玉帝', 'age' => 88],
['id' => '102', 'name' => '王母', 'age' => 78],
['id' => '103', 'name' => '如来', 'age' => 68],
];
//list()用于在一次操作中给一组变量赋值
// list($a, $b,$c) = [100,300,500];
// echo $a, $b, $c;
foreach ($users as list('id'=>$id, 'name'=>$name, 'age'=>$age) ) {
printf('id=%s, 姓名=%s, 年龄: %s<br>', $id, $name, $age);
}
结论:
- 对数组的定义与访问加深了了解,
list()
应用场景还需要多实践。