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

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Junwind
讨论数量: 0
发起讨论 只看当前版本


暂无话题~