2012-10-23 3 views
1

변수를 배열 내에서 파싱해야하므로 $ head [ 'meta_title']을 에코 할 때 lol이 표시됩니다. 큰 따옴표로 묶으려고했는데 그 중 하나가 작동하지 않는 것 같습니다. 감사!배열 내의 변수 PHP

나도 예상치 못한 T_VARIABLE을 얻고 나는 따옴표를 사용할 때 나는

$meta_title = "lol"; 

public $head = array 
(
    "title"  => "blah", 
    "meta_title" => $meta_title, 
    "meta_content" => $meta_content 
); 
+0

왜 $ meta_content 뒤에 쉼표를 넣었습니까? 그것을 제거하십시오 – itsols

+0

'$ meta_content, '의 끝에 쉼표를 제거하십시오 –

+0

@MuthuKumaran 마지막 쉼표는 아무런 해를 끼치 지 않습니다. – insertusernamehere

답변

5

당신은 클래스 속성을 초기화하는 식을 사용할 수 없습니다 ","예상치 못한 얻을. 두 변수의 값은 런타임까지 알 수 없으므로 선언에서 사용할 수 없습니다. 대신 생성자에서 정의하십시오.

public $head = array 
(
    // The title as a string literal is ok... 
    "title"  => "blah", 
    "meta_title" => NULL, 
    "meta_content" => NULL 
); 
// Pass them to the constructor as parameters 
public function __construct($meta_title, $meta_content) 
{ 
    // Initialize them in the constructor. 
    $this->head['meta_title'] = $meta_title; 
    $this->head['meta_content'] = $meta_content; 
} 

From the docs

클래스 멤버 변수

는 "속성"이라고합니다. "속성"또는 "필드"와 같은 다른 용어를 사용하여 참조 된 것을 볼 수도 있지만이 참조를 위해 "속성"을 사용합니다. 이들은 public, protected 또는 private 키워드 중 하나를 사용하여 정의되고 일반 변수 선언이 뒤 따른다. 이 선언에는 초기화가 포함될 수 있지만이 초기화는 상수 값이어야합니다. 즉, 컴파일시 평가가 가능해야하며 평가를 위해 런타임 정보에 의존해서는 안됩니다.

+0

는 확인 아, 이해 것이라고, 나는 실제로는 \t \t '클래스 standardHandle \t \t { \t \t \t // 다른 클래스에서 정의한 \t \t \t // 메타 데이터 \t \t \t public $ meta_title = "lol"; \t \t \t public $ meta_content = "mao"; \t \t \t \t \t \t // 스타일 시트 \t \t \t 공공 $ 스타일 = 배열 ​​( \t \t \t \t "링크"=> "있는 style.css" \t \t \t \t "유형"=> "화면" , \t \t \t); \t \t \t \t \t \t \t \t}' – Melbourne2991

+0

좋아, 내가 그 나라의 클래스의 생성자에 추가하는 방법은 무엇입니까? – Melbourne2991

+0

@ user1650757이를 사용해야하는 클래스의 생성자로 전달합니다. 만약 그들이 다른 클래스에서 정의 되었다면, 그것은 다음과 같을 것입니다 :'new ThisClass ($ otherclass-> meta_title, $ otherclass-> meta_content);' –

2

개체 내에있는 경우이 방법으로 변수를 할당 할 수 없습니다. __construct -method를 사용하여 설정해야합니다.

0

$ head보다 먼저 대중을 삭제해야합니다. PHP Sandbox에서 예제를 만들었습니다.

http://sandbox.onlinephpfunctions.com/code/d17bc90e1291f6a3b23537984df755e40446add6

+0

나는 '대중'이 더 많이 보여준다고 말하고 싶다. OP가 모든 것을 게시하지 않았더라도, 그가 객체의 범위 내에서 이것을하려고 노력하고 있다고 말한다. – insertusernamehere

+0

이것은'public' 클래스 속성 선언입니다. http://php.net/manual/en/language.oop5.properties.php –

+0

어리석은 날입니다. 물론 수업에 있습니다. Nvm. –