在PHP中,我们还能够以填充方式来创建新数组,主要用到的函数为:array_fill()和array_fill_keys()。
-
array_fill():会以填充键值的方式来创建一个新数组
-
array_fill_keys():会以填充键名和键值的方式来创建一个新数组
下面我们通过代码示例来具体了解一下这两个函数。
1、array_fill()函数
<?php $arr=array_fill(0,4,"hello"); var_dump($arr); ?>
array_fill($index, $number, $value)函数接受3个不可省略的参数$index(起始索引)、$number(填充元素数量)和$value(用于填充的键值)。
其中,$index参数支持负值,数组索引有以下三种取值情况:
-
如果为正数,则数组索引从
$index值开始,到$index+$number-1值结束。例$index为2,$number为4,则数组索引为:2、3、4、5。 -
如果为0,则数组索引从
0开始,到$number-1值结束。例$index为0,$number为4,则数组索引为:0、1、2、3。 -
如果为负数,则数组索引由
$index,0,1,2, ...,$number-2组成。例$index为-2,$number为4,则数组索引为:-2、0、1、2。
在上例中,array_fill(0,4,"hello")的$index为0(索引从0开始)、$number为4(数组有四个元素),因此数组索引为:0、1、2、3;而$value为hello,则这四个元素的键值都为hello,因此输出结果为:

在看两个示例:
<?php $arr=array_fill(3,4,"hello"); var_dump($arr); ?>
分析:索引从3开始、到3+4-1=6结束,数组的键值都为hello,因此输出结果为:

<?php $arr=array_fill(-2,4,"hello"); var_dump($arr); ?>
输出结果为:

$value参数不仅可以是单个数值/字符串,也可以是一个数组,那么创建的就是一个二维数组了。
<?php
header("Content-type:text/html;charset=utf-8");
$arr=array_fill(0,4,array("张三",25,"男"));
var_dump($arr);
?>
输出结果为:

2、array_fill_keys()函数
<?php
$keys=array("a","b","c","d");
$arr=array_fill_keys($keys,"hello");
var_dump($arr);
?>
array_fill_keys($keys,$value)函数接受2个不可省略的参数$keys(包含填充键名的一个数组)、$value(填充键值)。
简单来说,array_fill_keys()函数会使用$keys数组中元素作为键名,$value作为值来填充出一个新数组。
从上面的代码示例可以看出:新数组有四个元素,键名分别为“a”、“b”、“c”、“d”;这四个元素的键值都为“hello”,因此输出结果为:

array_fill_keys()和array_fill()函数一样,$value值也可以接受一个数组,那么创建的就是一个二维数组了。
<?php
header("Content-type:text/html;charset=utf-8");
$keys=array("a","b","c","d");
$arr=array_fill_keys($keys,array("李四",21,"男"));
var_dump($arr);
?>
输出结果为:


