无法在同一个数组中使用数组键

时间:2014-11-28 15:29:23

标签: php arrays

我有一个数组:

$args = array(
  'n' => 10,
  'd' => $args['n']*3,
);

Notice: Undefined variable: args in ...

为什么我不能那样做?

修改 我应该这样做吗?

$args = array(
  'n' => 10,
);
$args = array(
  'd' => $args['n']*3,
);

有点可怕:P

3 个答案:

答案 0 :(得分:0)

这是一个鸡/蛋问题:

$args = array(...);

仅在解析完ENTIRE数组定义后返回并将新数组放入$ args。因此,当您尝试在其自己的数组定义中访问$ args时,它将不会被定义。

$args = array(0 => $args);
                   ^^^^^--undefined variable, not yet available for use.

答案 1 :(得分:0)

PHP首先必须创建整个数组,然后才能将结果分配给$ args属性。这意味着,在创建数组时,$ args的值尚未设置(或者是之前的任何值)。

您必须一次设置一个元素:

$args = array( 'n' => 10 );
$args['d'] = $args['n'] * 3;

或手动进行计算:

$args = array( 'n' => 10, 'd' => 10 * 3 );

或者像这样:

$a = 10;
$args = array( 'n' => $a, 'd' => $a * 3 );

答案 2 :(得分:0)

您收到未定义的变量错误,因为当您尝试在数组中使用$args时未定义$args = array( 'n' => ($n = 10), 'd' => $n * 3 ); 。您可以使用临时变量解决此问题:

{{1}}