PHP在数组中使用变量

时间:2014-04-21 13:23:20

标签: php arrays

目前我正在设置这样的数组...

public function setup_array()
{
    $columns = array(
        'date1' => '2014-01-24',
        'date2' => '2014-02-14',
        'date3' => '2014-03-11',
        'date4' => '2014-04-01'
    );
    return $columns;
}

这有效,但是我想使用已经设置的变量代替日期......就这样......

public function setup_array()
{
    $columns = array(
        'date1' => '$date1',
        'date2' => '$date1',
        'date3' => '$date1',
        'date4' => '$date1'
    );
    return $columns;
}

我试过这样做虽然$ date变量可以设置,但实际上它会打印$ date1或者自己检索变量值。

我做错了什么?

6 个答案:

答案 0 :(得分:4)

  1. 单引号将导致按字面意思解释字符串。使用双引号。
  2. 没有任何传递的参数 - $date1在函数范围内是未知的,因此不会被替换。

    public function setup_array($date1)
    {
        $columns = array(
            'date1' => $date1,
            'date2' => $date1,
            'date3' => $date1,
            'date4' => $date1
        );
        return $columns;
    }
    
  3. 在您的情况下,即使您使用变量,也不需要双引号。

答案 1 :(得分:2)

删除引号

public function setup_array($date1)
{
    $columns = array(
        'date1' => $date1,
        'date2' => $date1,
        'date3' => $date1,
        'date4' => $date1
    );
    return $columns;
}

答案 2 :(得分:1)

删除引号

    public function setup_array($date1)
{
    $columns = array(
        'date1' => $date1,
        'date2' => $date1,
        'date3' => $date1,
        'date4' => $date1
    );
    return $columns;
}

答案 3 :(得分:0)

删除单引号

public function setup_array()
{
    $columns = array(
        'date1' => $date1,
        'date2' => $date1,
        'date3' => $date1,
        'date4' => $date1
    );
    return $columns;
}

<强>解释

$expand=1;$either=2;
echo 'Variables do not $expand $either';
// Outputs: Variables do not $expand $either

echo "Variables do not $expand $either";
// Outputs: Variables do not 2 1

更多详情String PHP

答案 4 :(得分:0)

您需要了解PHP语法

你的第一个例子中的引用并不意味着&#34;用作数组值的东西&#34;但是常规的字符串分隔符。即这些引号属于字符串,而不属于数组。

答案 5 :(得分:0)

另请注意\ DateTime没有__toString()方法,因此如果$ date1是\ DateTime的实例,则必须调用$date1->format('Y-m-d')

public function setup_array($date1)
{
    $columns = array(
        'date1' => $date1->format('Y-m-d'),
        'date2' => $date1->format('Y-m-d'),
        'date3' => $date1->format('Y-m-d'),
        'date4' => $date1->format('Y-m-d'),
    );
    return $columns;
}

否则它会在回显或强制转换为字符串时抛出\ Exception。 如果$ date1是标量,你可以使用双引号“$ date1”,它应该仍然有效。 见[http://www.php.net/manual/es/class.datetime.php]