2012-10-25 3 views
1

누구든지이 동작을 설명 할 수 있습니까?PHP stdClass가 'id'속성을 이상한 동작으로 설정했습니다.

$object = new stdClass(); 


    //This works. 
    $object->test = "Test"; 

    //This works. 
    $arbitrary = "arbitrary"; 
    $object->$$arbitrary = "again, testing"; 

    //This works. 
    $object->id = "2"; 

    //This fails 
    $test = "id"; 
    $object->$$test = "2"; // On this line. 

동적 변수 이름을 통해 'id'속성을 설정하려고합니다. 명시 적으로 명시하면 'id'속성을 올바르게 설정할 수 있습니다. 다른 변수 이름을 동적으로 설정할 수 있습니다. 즉 '임의'로 설정할 수 있습니다. 어떤 제안?

답변

3

$id이라는 변수가 없습니다.

는 구문 오류가 있습니다이

$id = "2"; 

$test = "id"; 
$object->$$test = "2"; // On this line. 
+0

$object->{$test} 감사합니다 사용하는 것입니다. 나는 $ object-> $$ 테스트가 $ object-> id로 평가 될 것이라고 생각했지만 대신 id라는 변수에서 값을 찾습니다. 나는 $ object-> id로 평가하기 위해 $ object -> {$ test}를 찾고 있다고 생각한다. –

0

을보십시오. 당신은 내가 믿는이 원하는 : 대신

$object->$$test 
1

그것은 PHP가 $object->$$test을 평가하는 방법에 관한 것입니다의

$object->{$test} 

;

하여 $$test이 평가 첫째, 이것은 VAR $id 리드하고있다가 Notice: Undefined variable: id

해결책 변수 $id를 정의하는 것입니다 제공하지만, 더 나은