2014-10-31 2 views
1

누군가 내가 엉망이 된 곳과/또는 어떻게 해결할 수 있는지 알려주실 수 있습니까?정수와 문자열을 배열 값으로 결합

작동 코드 (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>이 비어있는 것을 의미한다. 또한 date('Y') 대신 (string)date('Y')을 추가하려고했지만 아무 소용이 없습니다.

미리 감사드립니다.

+0

어떤 오류를받을 수 있나요? –

+0

PHP는 정수와 문자열을 연결하는 데 문제가 없습니다. 이 경우에는 항상 정수를 문자열로 변환합니다. var_dump (date ('Y'). 'Mi Empresa'); 그리고 결과물을 볼 수 있습니까? –

+0

이 클래스 속성 선언입니까? 아니, 당신이 그것을 할 수 없어, 그것은 생성자에서 설치해야합니다 – Ghost

답변

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 :

그들은 (속성), 보호, 공공 키워드 중 하나를 사용하여 정의 또는 비공개, 그 다음에 일반 변수 선언이옵니다. 이 선언에는 초기화가 포함될 수 있지만이 초기화는 상수 값이어야합니다. 즉, 컴파일시 평가가 가능해야하며 평가를 위해 런타임 정보에 의존해서는 안됩니다.

이것은 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'); 
관련 문제