질문/조언질답게시판
Extra Form
PHP PHP 8.0
CMS Rhymix 2.x

    foreach($coin_list_id as $key => $val):

        //$coin_address[] = $memberInfo->$val;

    endforeach;

    foreach($coin_list_id as $key => $val):

        //array_push($coin_address,$memberInfo->$val);

    endforeach;

 

array_push 를 하고자 하는데 

위 주석코드 두개가 다 실행이 되질 않네요...

조언을 구할수 있을까요?

  • profile
    실행이 foreach 안에 반복문이 실행이 되는지 먼저 확인해보세요.

    coin_list_id <-가 어떤 정보를 가지고 잇는지를 봐야 할텐데 만약 이 부분에 데이터가 없다면$coin_address 변수값은 빈값을 배열로 추가할 수 잇습니다.
  • profile ?
    값을 한번 다시 살펴보도록 하겠습니다.
    감사합니다.
  • profile

    현재 템플릿 문법에서 쓸 수 없는 것이 몇 가지 있는데요,
    $memberInfo->$val 이렇게 오브젝트 속성을 변수로 쓰는 문법도 그 중 하나입니다.

    XE 문법을 처음 설계할 때 이런 활용법을 고려하지 않은 탓에,
    변수를 치환하는 과정에서 문법이 꼬여버립니다. ㅡ.ㅡ
    $memberInfo를 배열로 바꾼 후 $memberInfo[$val] 이렇게 표현하거나,
    그 밖의 다른 방법으로 구현하셔야 합니다.

  • profile ?
    정말 감사합니다. 배열형태로 바꾸니 해결이 되는군요...
    진짜 상상도 못한 에러였습니다
  • ? profile

    템플릿에서 사용하는 모든 변수는 Context에서 받아오는 것이기 때문에
    템플릿 컴파일시 $val은 $oContext->val 이런 식으로 변환이 됩니다.
    $memberInfo->val은 $oContext->memberInfo->$oContext->val 이 되어버리지요. ㅠ
    $memberInfo->{$val} 이렇게 중괄호로 묶어야 변환 후에도 정상 작동할 텐데,
    중괄호 안에 있는 변수는 템플릿 문법에서 또다른 의미를 가지다 보니... 진퇴양난이네요.

     

    참고로 템플릿 컴파일된 결과물은 files/cache/template 폴더 내에 원본 파일과 동일한 경로에 캐싱되니

    뭔가 이상하다 싶을 때는 여기를 살펴보시면 힌트를 얻을 수 있습니다.

  • profile ?
    마지막 팁 감사합니다! 좀 덜 헤메게 되겠네요 :)