2013-06-20 4 views
0

내가 여기에 몇 가지 답변을 통해 검토 한 결과 난 그냥 아주 내가 내 상황에 특정 그것을 물어 어쩌면 경우, 무엇을 찾고 있어요 얻을 수 없습니다동적 변수

첫째,하자 내게 내가 라고 말하면서,은 속도가 빠르지 만, 나는 PHP에 능숙하다. 나는 우리가 사과를 여기 오렌지와 비교한다는 것을 알고 있지만, 단지 예를 통해서만 견뎌 낼 수 있습니다.

이것을 상상해보십시오. 데이터베이스의 새로운 개체 배열에 일부 데이터가 있습니다. 각 레코드에는 고유 식별자가 있습니다. 이 고유 한 식별자를 객체의 변수 이름으로 사용하고 싶습니다. PHP에서

이 쉽게 바보 :

<?php 

    $goalObject = new stdObject(); 

    foreach ($row as $data) 
    { 
     $identifier = $data->unique_id;    

     $goalObject->$$identifier = new stdObject(); 

     $goalObject->$$identifier->name = $data->name; 
     $goalObject->$$identifier->total = $data->num_apples + $data->num_oranges; 
    } 

공지 사항 identifier에 대한 이중시길 ($$).

이제는 unique_id가 실제로 문자로 시작하므로 변수 이름으로 사용하는 것이 좋습니다. unique_id의 예는 AAA0000과 같은 것입니다. 공백이 없으며 하이픈도없고 구두점도 없습니다.

목표 개체는 $goalObject->AAA0000->name 또는 $goalObject->AAA0000->total입니다. (또는 $goalObject.AAA0000.name$goalObject.AAA0000.total의 속도)

내가 그렇게 할 수 있다면, 나는 너무 행복 할 것이다. 그러나 내가 말할 수있는 것에서, Velocity는 이것만큼 멋진 것은 허용하지 않습니다.

제발, 누군가 나를 도와주세요.

미리 답변 해 주셔서 감사합니다.

+0

최근 게시물의 복제본 같습니다 : http://stackoverflow.com/questions/17084542/construct-variable-names-dynamically-in-velocity – Edd

답변

0

정확히 내가 찾던 것이 아니지만 맵을 사용하여이 작업을 수행 할 수있었습니다. 나는 다른 대답이 무엇을 말하고 있는지 완전히 이해하지 못했을 것 같다. 일반적으로 나는이 게시물을 삭제하고 그것이 일어난 적이없는 것처럼 가장 할 것이지만 비슷한 문제가있는 누군가가있을 수 있습니다.

$goalObject.AAA0000.name을 작동 시키려면지도를 만들어야했습니다.

#set($goalObject = {}) 

#foreach ($data in $row) 
    #set($identifier = $data.unique_id) 

    #set($name = $data.name) 
    #set($total = $data.num_apples + $data.num_oranges) 

    #set($dummy = $goalObject.put({ 
     'name' : $name, 
     'total' : $total 
    })) 
#end 

지금까지 나를 위해 노력하고, 대신 $goalObject.AAA0000.name를 입력, 나는 $goalObject.get("AAA0000").name을 사용해야합니다. 나는 그것이 작동하고있어 행복하다.

+1

$ goalObject.AAA0000.name이 (가) 당신을 위해 작동해야합니다 ... 맵 값 검색을 위해 .get()을 명시 적으로 사용할 필요가 없습니다. – Edd