一、数组的定义与访问
1.数组的定义
- 索引数组:位置敏感,访问严重依赖元素在数组中的位置
- 索引数组的元素的索引,默认从0开始递增1
- 关联数组:键的类型是字符串,应该有语义化
- 关联数组的访问与元素在数组中的位置无关,只与它的键名相关
多维数组,二维用的最多
代码如下<?php
$staff = [];
$staff[] = '10';
$staff[] = '八戒';
$staff[] = '123@qq.com';
printf('<pre>%s</pre>',print_r($staff,true));
//关联
$staff = [];
$staff['id'] = '100';
$staff['name'] = '八戒';
$staff['email'] = '123@qq.com';
printf('<pre>%s</pre>',print_r($staff,true));
//多维
$users = [
['id'=>1,'name'=>'老公','age'=>40],
['id'=>2,'name'=>'老婆','age'=>30],
['id'=>3,'name'=>'孩子','age'=>10],
];
printf('<pre>%s</pre>',print_r($users,true));
echo $users[1]['name'];
2.. 获取数组与访问
- 用parse_str查询字符串,只获取内容:id=1&name=admin&role=1
<?php
print_r($_SERVER['QUERY_STRING']);
echo '<hr>';
parse_str($_SERVER['QUERY_STRING'], $queryArr);
print_r($queryArr);
echo '<hr>';
print_r(parse_url('http: //php.edu/0710/demo2.php?id=1&name=admin&role=1'));
echo '<hr>';
print_r(parse_url('http: //php.edu/0710/demo2.php?id=1&name=admin&role=1')['query']);
二、数组的遍历,使用指针,for/whie,foreach,list的用法
1. 使用数组指针,逐个遍历
代码如下:$stu = ['id' => '1982', 'name' => '梅超风', 'age' => 20, 'course' => 'php', 'grade' => 99];
// 拿键和拿值
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
// 访问完成之后,指针手工后移
next($stu);
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
// 指针前移
prev($stu);
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
// 直接访问最后一个
end($stu);
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
// 指针复位,回到第一个
reset($stu);
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
2. while,for,foreach举例来遍历数组,获取值
// 用while循环来实现遍历
$stu = ['id' => '1982', 'name' => '梅超风', 'age' => 20, 'course' => 'php', 'grade' => 99];
reset($stu);
while (true) {
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
if (next($stu)) continue;
else break;
}
echo '<hr>';
// 2.用for循环来实现遍历关联数组
reset($stu);
for ($i = 0; $i < count($stu); $i++) {
printf('[\'%s\']=>%s<br>', key($stu), current($stu));
next($stu);
}
echo '<hr>';
// 3.foreach循环来实现遍历关联数组,推荐使用
// 不用指针复位;不用手工移动,自动后移
$stu = ['id' => '1982', 'name' => '梅超风', 'age' => 20, 'course' => 'php', 'grade' => 99];
// 用key取键,用value取值
foreach ($stu as $key => $value) {
echo "['{$key}'] =>$value <br>";
}
3.list():针对索引数组和关联数组,解析/解构
代码如下
//list()解构/解析:索引数组
list($a,$b,$c) = [10,30,50];
echo $a,$b,$c;
echo '<hr>';
//list()解构/解析:关联数组
list('lesson'=>$lesson,'grade'=>$grade) = ['lesson'=>'js','grade'=>80];
echo $lesson,'===>',$grade;