【问题标题】:What does PHP syntax $var1[] = $var2 mean?PHP 语法 $var1[] = $var2 是什么意思?
【发布时间】:2013-09-12 21:48:17
【问题描述】:

PHP 语法$var1[] = $var2 是什么意思?

注意$var1 变量后面的[]

【问题讨论】:

标签: php syntax


【解决方案1】:

这意味着$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; 会导致这样的数组:

$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)
    )

【讨论】:

  • $var1[]=$tempArr; -- 这只会将最后一项(即$row['posts'])推送到$var1
  • @AmalMurali 很好发现。我按照我的意图更改了代码。不敢相信在你做之前没有人捡到它! +1
【解决方案2】:

这意味着您将var2 的值推送到数组var1

【讨论】:

    【解决方案3】:

    这是array_push()的简写

    它将生成$var1 和数组(如果还没有的话)并将$var2 推入其中。

    【讨论】:

      【解决方案4】:

      它基本上使 $var1 成为一个数组,并在其末尾添加一个 $var2 的值。

      $var1 = NULL;
      $var2 = 'abc';
      $var1[] = $var2;
      

      $var1 现在是一个包含一个值的数组:'abc'

      【讨论】:

        猜你喜欢
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        • 1970-01-01
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多