在数组值中组合整数和字符串

时间:2014-10-31 00:36:52

标签: php arrays date string-concatenation

有人可以告诉我我搞砸了哪里和/或我怎么解决这个问题?

工作代码(PHP):

public $data = array(
    ....
    ....
    'copyright' => array(
         'es' => '2013 Mi Empresa',
         'en' => '2013 My Company',
     ),
    ....
    ....    
);

代码破碎:

public $data = array(
    ....
    ....
    'copyright' => array(
       'es' => date('Y') . ' Mi Empresa',
       'en' => date('Y') . ' My Company',
     ),
    ....
    ....    
);

当我说破碎时,我的意思是生成的<body>为空。我也尝试添加(string)date('Y')代替date('Y'),但无济于事。

提前致谢!

1 个答案:

答案 0 :(得分:1)

不,你不能像这样设置你的属性:

class Test
{
    // this won't work
    public $data = array(
        'copyright' => array(
            'es' => date('Y') . ' Mi Empresa',
            'en' => date('Y') . ' My Company',
        ),
    );

    // even as simple as this
    public $date_now = date('Y-m-d');
}

引用manual

  

它们(属性)通过使用关键字public,protected或private之一定义,后跟正常变量声明。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

它只是意味着PHP不会在编译时执行此类操作;您不能将计算值和函数分配给常量。

在构造函数上设置它:

class Test
{
    public $data = array(
        'copyright' => array(
            'es' => '',
            'en' => '' ,
        ),
    );

    public $date_today = '';

    public function __construct()
    {
        $this->data['copyright']['es'] = date('Y') . ' Mi Empresa';
        $this->data['copyright']['en'] = date('Y') . ' My Company';
        $this->date_today = date('Y-m-d');
    }
}

$test = new Test();
echo '<pre>';
print_r($test);

旁注:没有错误问题的问题是最有可能的错误报告被关闭。 (白屏死机)。

始终在开发阶段将其打开:

error_reporting(E_ALL);
ini_set('display_errors', '1');