PHP 语法$var1[] = $var2
是什么意思?
注意[]
after$var1
变量。
这意味着这$var1
是一个数组,这种语法意味着您要插入$var2
到数组末尾的新元素中。
因此,如果您的数组之前有 2 个元素,如下所示:
$var1=( 1 => 3, 2 => 4)
$var2 的值是 5,它不会是这样的:
$var1=( 1 => 3, 2 => 4, 3 => 5)
这也意味着如果 $var2 本身是一个数组,那么您刚刚创建了一个二维数组。假设如下:
$var1=( 1 => 3, 2 => 4)
$var2=( 1 => 10, 2=>20)
执行$var1[]=$var2;
wouls 会产生这样的数组:
$var1=( 1 => 3, 2 => 4, 3 => (1 =>10, 2 => 20))
顺便说一句,如果您还没有使用过多维数组,那么访问数据非常简单。如果我想使用新数组中的值 20,我可以这样做:
echo $var1[3][2];
注意第二组方括号 - 基本上你是说我想访问 $var1 数组的元素 3 内的数组元素 2。
关于这一点,有一点需要注意。如果您正在使用多维数组,则此语法可以使您陷入某种循环结构中。假设您有一个二维数组,您可以在其中存储一些记录并希望从数据库中获取更多信息:
$var1 = (
1 => (id =>1, age => 25, posts => 40),
2 => (id =>2, age => 29, posts => 140),
3 => (id =>3, age => 32, posts => 12)
)
如下所示的循环:
while($row=someDatabaseRow)
{
$var1[]=$row['id']; // value 4
$var1[]=$row['age']; // value 21
$var1[]=$row['posts']; // value 34
}
实际上将为每次执行插入一个新元素,因此您的数组最终看起来像这样:
$var1 = (
1 => (id =>1, age => 25, posts => 40),
2 => (id =>2, age => 29, posts => 140),
3 => (id =>3, age => 32, posts => 12),
4 => 4,
5 => 21,
6 => 34
)
正确的方法是先组装数组,然后将其附加到当前数组以维护结构,如下所示:
while($row=someDatabaseRow)
{
$tempArr= array();
$tempArr[]=$row['id']; // value 4
$tempArr[]=$row['age']; // value 21
$tempArr[]=$row['posts']; // value 34
$var1[]=$tempArr;
}
现在您的数组看起来像您预期的那样,即:
$var1 = (
1 => (id =>1, age => 25, posts => 40),
2 => (id =>2, age => 29, posts => 140),
3 => (id =>3, age => 32, posts => 12)
4 => (id =>4, age => 21, posts => 34)
)
这意味着您正在将值推var2
送到 array var1
。
这是简写array_push()
它将制作$var1
和排列(如果还没有的话)并推入$var2
它。
它基本上使 $var1 成为一个数组,并在其末尾添加一个 $var2 的值。
$var1 = NULL;
$var2 = 'abc';
$var1[] = $var2;
$var1 现在是一个包含一个值的数组:'abc'