前言
本文简记数组、关联数组、多维数组、多维关联混合数组的格式、调用、添加、删除。
特别注意
-
注意 1
索引或者 key 基本上是一个东西,只不过 key => value 是将索引设定为自己的 key 值。
key 值可以是数字,也可以是字符串。
-
注意 2
如果自己声明时 key 值是数字,将会替换系统默认的索引为 key 对应的 value 。
-
注意 3
如果自己声明时 key 值是字符串,但是是整数,系统将自动去掉引号。
$numbers['1']
等同于$numbers[1]
。 -
注意 4
数组在执行添加时,未曾添加或者删除过的索引项,在执行添加操作时,无论索引是数字,还是字符串,无论数字是否比之前最大的索引值大,还是字符串的字母大小比之前最大的索引值大,都是在数组末尾添加。
比如向索引只有 0、2 的数组
array(2) {[0]=> int(0) [2]=> int(2)}
中添加索引为 1 的元素$numbers[1] = 1;
结果为:array(3) { [0]=> int(0) [2]=> int(2) [1]=> int(1) }
-
注意 5
数组在执行删除时,与
"注意 4"
同理。
数组
格式
-
示例
$numbers = [0, 1, 2, 3];
本质:
array(4) { [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) }
调用
-
指定 key (索引)调用:
这时的 key 就是默认的索引顺序。
echo $numbers['1']."<br>"; 或 for ($n = 0; $n<4; $n++) { echo $numbers[$n]."<br>"; }
-
foreach 遍历调用:
foreach ($numbers as $number) { echo $number."<br>"; }
-
foreach 遍历调用变形:
foreach ($numbers as $number) : echo $number."<br>"; endforeach;
一般用于 PHP 文件的 HTML 中:
<ul> <?php foreach ($numbers as $number) : ?> <li><?php echo $number;?></li> <?php endforeach; ?> </ul>
添加
-
添加声明:
数组长度加 +1 ,添加在末尾。
$numbers[] = 4;
-
指定 key (索引)添加:
$numbers[5] = 5; $numbers['5'] = 5;
删除
-
指定索引删除:
unset($numbers[1]);
-
指定 key 删除:
这时的 key 就是默认的索引顺序。
unset($numbers['1']);
关联数组
格式
-
示例:
$numbers = [ 'zero' => 0, 'one' => 1, 'two' => 2, 'three' => 3];
本质:
array(4) { ["zero"]=> int(0) ["one"]=> int(1) ["two"]=> int(2) ["three"]=> int(3) }
调用
-
指定 key (索引)调用:
这里的索引就是 key 。
echo $numbers['zero']."<br>";
-
foreach 遍历 value 调用:
foreach ($numbers as $number) { echo $number."<br>"; }
-
foreach 遍历
key => value
调用:foreach ($numbers as $numberName => $number) { echo "name:".$numberName."<br>number:".$number."<hr>"; }
添加
-
注意:这时指定索引添加,使用的索引就是它的 key :
$numbers[1] = 4; $numbers['1'] = 4;
-
指定 key 添加:
$numbers['four'] = 4;
删除
-
指定 key (索引)删除:
这里的索引就是 key 。
unset($numbers['one']);
多维数组
格式
-
示例:
$numbers = [ [0, 1], [1, 2], [2, 3], [3, 4] ];
本质:
array(4) { [0]=> array(2) { [0]=> int(0) [1]=> int(1) } [1]=> array(2) { [0]=> int(1) [1]=> int(2) } [2]=> array(2) { [0]=> int(2) [1]=> int(3) } [3]=> array(2) { [0]=> int(3) [1]=> int(4) } }
调用
-
多维索引指定调用:
对于多维数组来说,通过单个索引得到的变量也是一个数组。当直接 echo 数组变量时,会报错。
echo $numbers[0][0]."<br>";
-
foreach 遍历 value 调用:
foreach ($numbers as $number) { foreach ($number as $num) { echo $num."<br>"; } echo "<hr>"; }
添加
-
添加声明:
数组长度加 +1 ,添加在末尾。
$numbers[] = [4, 5];
-
指定 key (索引)添加:
$numbers[4] = [4, 5]; $numbers['4'] = [4, 5];
删除
-
指定一级索引删除一级数组:
这时删除了索引为 1 的整个数组,多维数组中一级数组个数 -1 。
unset($numbers[1]);
-
指定多维索引删除最后一级数组/元素:
这时只删除了索引为 1 数组内的第一个元素。
unset($numbers[1][1]);
多维关联混合数组
格式
-
示例:
$numbers = [ 'zero' => ['zero0' => 0, 'zero1' => 1], 'one' => ['one1' => 1, 'one2' => 2], 'two' => ['two1' => 2, 'two2' => 3], 'three' => ['three1' => 3, 'three2' => 4] ];
-
本质:
array(4) { ["zero"]=> array(2) { ["zero0"]=> int(0) ["zero1"]=> int(1) } ["one"]=> array(2) { ["one1"]=> int(1) ["one2"]=> int(2) } ["two"]=> array(2) { ["two1"]=> int(2) ["two2"]=> int(3) } ["three"]=> array(2) { ["three1"]=> int(3) ["three2"]=> int(4) } }
调用
-
指定多维 key (索引)调用:
echo $numbers['zero']['zero1']."<br>";
-
foreach 多维遍历 value 调用:
foreach ($numbers as $number) { foreach ($number as $num) { echo $num."<br>"; } echo "<hr>"; }
-
foreach 多维遍历 key => value 调用:
foreach ($numbers as $numberKey => $numberValue) { foreach ($numberValue as $numKey => $numValue) { echo $numberKey." => ".$numKey." => ".$numValue."<br>"; } echo "<hr>"; }
添加
-
指定 key 添加:
数组长度加 +1 ,添加在末尾。
$numbers['four'] = ['four1' => 4, 'four2' => 5];
删除
-
指定一级 key 删除一级关联数组:
这时删除了整个
one
关联数组。unset($numbers['one']);
-
指定多维 key 删除最后一级关联数组/元素:
这时只删除了
one
关联数组内的第一个 key => value。unset($numbers['one']['one1']);