3.1. 使用数组
持之以恒,方得始终!
什么是数组
我们先回顾一下之前学的数据类型,有四种标量(int,float,string,bool),它们都只能存一个单一的值。
数组可以存放多种不同类型的值,可以理解为字典,集合,hash这种。
它里面是包含多个键值对的形式。通过key可以获取value。就像字典一样,一一对应。
先看下数组的几种示例:
$arr = []; // 初始化一个空数组
$arr = ['Tires', 'oil', 'spark plugs']; // 索引数组,索引默认从0开始,即等价于 [0=>'Tires', 1=>'oil', 2=>'spark plugs']
$arr = ['name'=>'rabbit', 'sex'=>'men', 'age'=>18];// 关联数组
$arr = [[1,2,3], ['x','y','z']]; // 多维数组
$arr = [true, 0.1, 10, 'hello', [], ['k'=>'v', v2], null]; // 混合数组
访问数组元素
$products = [];
// 增加元素
$products[] = 'tires';
$products[] = 'oil';
$products[] = 'spark plugs';
print_r($products);
// Array
// (
// [0] => tires
// [1] => oil
// [2] => spark plugs
// )
// 删除元素
unset($products[1]);
print_r($products);
// Array 通过打印的数据可见,删除了索引为1的元素,但是索引没有被重置
// (
// [0] => tires
// [2] => spark plugs
// )
// 改变元素值
$products[0] = 'tires goods';
print_r($products);
// Array
// (
// [0] => tires goods
// [2] => spark plugs
// )
// 查,获取某个元素值
print_r($products[2]);
// spark plugs
使用循环遍历数组
for,适合有序的数字索引数组
$products = ['tires', 'oil', 'spark plugs']; // 这个数组的索引是 0, 1, 2
for($i=0; $i < count($products); $i++) { // count() 获取数组的元素个数,这里等于3
echo "$i => $products[$i] \n";
}
// 0 => tires
// 1 => oil
// 2 => spark plugs
foreach
每循环一次,就把数组的指针向前移动一个元素。然后再把当前元素的索引赋值给 $key, 值赋值给 $value。
$prices = ['tires' => 100, 'oil' => 10, 'spark plugs' => 4]; // 关联数组
$prices['car'] = 'bwm'; // 新增一个,默认在数组末尾
foreach($prices as $key => $value) {
echo "$key => $value \n";
}
我们可以使用reset()
来重置一个数组指针。
数组操作符
+, == , ===, != , !==
因为这个用的不多,所以不在详细说明了,具体用法见手册
多维数组
我们说下二维数组,可以类比为一个网格数据。
用二维数组实现就是:
$products = [
['code' => 'tir', 'des' => 'tires', 'price' => 100],
['code' => 'oil', 'des' => 'oil', 'price' => 10],
['code' => 'spk', 'des' => 'spark', 'price' => 4]
];
// 访问二维数组里面的元素
echo "{$products[0]['code']} - {$products[0]['des']} - {$products[0]['price']}"; // tir - tires - 100
// 使用foreach循环遍历一下
echo "|code|des|price|" . PHP_EOL;
foreach($products as $product) {
foreach($product as $key => $value) {
echo "|" . $value;
}
echo "|" . PHP_EOL;
}
// |code|des|price|
// |tir|tires|100|
// |oil|oil|10|
// |spk|spark|4|
// 或者使用for循环遍历
for($row = 0; $row < count($products); $row++) {
echo "|" . $products[$row]['code'] . "|" . $products[$row]['des'] . "|" . $products[$row]['price'] . '|' . PHP_EOL;
}
我们可以看到,假如循环遍历时,数组中的元素不多,可以用最后的一种办法,也就是直接把里面一层的写出来,这样就会减少一层循环了,大大加强了性能。实际项目中,也会有用到这种。
如有任何侵权行为,请通知我删除,谢谢大家!
个人邮箱:865460609@qq.com