PHP 数组的定义与访问、数组的遍历
PHP 数组的定义与访问
- php 数组分为:索引数组与关联数组两种
- 索引数组的键名默认从 0 开始逐项加 1 可以不写
- 索引数组的值通过索引序号来访问
- 关联数组的键名为自定义的字符串
- 关联数组的值通过自定义的键名来访问
<?php
//数组的定义
//1.索引数组
$names = ['张三','李四','王五'];
//索引数组的访问
echo $names[0].' '.$names[1].' '.$names[2].' '.'<br>';
//2.关联数组
$msg = ['id'=>001,'name'=>'张三','age'=>20];
//关联数组的访问
echo $msg['id'].' '.$msg['name'].' '.$msg['age'].' '.'<br>';
PHP 数组的创建
- 使用追加的方式添加数组信息
- 多维数组(常用二维数组)
<?php
//数组的创建
//1.索引数组
$car = [];
$car[] = 'Audi';
$car[] = 'BMW';
$car[] = 'Benz';
//打印输出数组信息
printf('<pre>%s</pre>',print_r($car,true));
//2.关联数组
$msg = [];
$msg['brand'] = 'Volvo';
$msg['model'] = 'XC60';
$msg['num'] = 82;
printf('<pre>%s</pre>',print_r($msg,true));
//3.多维数组
$cars = [
['brand'=>'Volvo', 'model'=>'XC60', 'num' => 82],
['brand'=>'Audi', 'model'=>'Q5L', 'num' => 88],
['brand'=>'BMW', 'model'=>'X3', 'num' => 101]
];
printf('<pre>%s</pre>',print_r($cars,true));
//多维数组的访问
echo $cars[1]['brand'];
PHP 数组的遍历
- 数组的遍历有四种方式
- 使用指针
- 使用 while 循环
- 使用 for 循环
- 使用 foreach 遍历
- list()函数可以用来解析/解构数组
<?php
//数组的遍历
$car = ['brand'=>'Audi', 'model'=>'Q5L', 'price'=>40];
//1.使用指针遍历
//current():获取当前元素的值
//key():获取当前元素的键
printf('%s => %s <br>', key($car), current($car));
next($car); //next():指针往下一个移动
printf('%s => %s <br>', key($car), current($car));
prev($car); //prev():指针往上一个移动
printf('%s => %s <br>', key($car), current($car));
reset($car); //reset():指针复位 指针移到最开始位置
printf('%s => %s <br>', key($car), current($car));
end($car); //end():指针移到最末尾位置
printf('%s => %s <br>', key($car), current($car));
//2.使用while遍历
echo '<hr>';
reset($car); //reset():指针复位 指针移到最开始位置
while(true){ //进入while循环
printf('%s => %s <br>', key($car), current($car));
if(next($car)) continue; //指针往下一个移动并判断是否遍历结束
else break;
}
//3.使用for遍历
echo '<hr>';
reset($car); //reset():指针复位 指针移到最开始位置
for($i = 0; $i < count($car); $i++){
printf('%s => %s <br>', key($car), current($car));
next($car); //指针往下一个移动
}
//4.使用foreach遍历
//遍历索引数组
echo '<hr>';
$arr = ['hello', 'world'];
foreach($arr as $value){
echo $value;
}
//遍历关联数组
echo '<hr>';
foreach($car as $msg => $value){
printf('%s => %s <br>', $msg, $value);
}
//5.使用list函数解构解析数组
echo '<hr>';
list('brand'=>$brand, 'model'=>$model, 'price'=>$price) = $car;
echo "brand => {$brand} <br>","model => {$model} <br>","price => {$price} <br>";
//使用foreach+list解析二维数组
echo '<hr>';
$cars = [
['brand'=>'Volvo', 'model'=>'XC60', 'price' => 39],
['brand'=>'Audi', 'model'=>'Q5L', 'price' => 41],
['brand'=>'BMW', 'model'=>'X3', 'price' => 38]
];
foreach($cars as list('brand'=>$brand, 'model'=>$model, 'price'=>$price)){
echo "brand => {$brand} <br>","model => {$model} <br>","price => {$price} <br>";
}
- 使用
foreach
不需要指针复位、不需要手动移动指针 自动后移 foreach
比 while
与 for
语句更适合遍历数组- 使用
list
函数能直接将一组数组赋值成一堆变量