2011-11-24 2 views
2

Joomla Framework를 사용하여 MySQL 테이블의 옵션을 표시하는 구성 요소를 만듭니다. 각 옵션에는 다양한 매개 변수가 많이 있으므로 custparams 필드에 json 배열로 설정됩니다.변수 이름을 사용하여 PHP에서 새 변수를 만드는 방법은 무엇입니까?

이 함수는 옵션 ID를 기반으로 각 옵션에서 이러한 사용자 지정 매개 변수를 추출합니다.

JSON 데이터는 stdObject로 디코딩 및 기록됩니다

$this->_oparams->$pkey=$custom_params->pvalue; 

그래서 난 모든 매개 변수를 나열 방지 할 수 있습니다

$_oparams=null; 
function _custParamsOpt($pid) 
{  
    $query='SELECT custparams FROM #__mycomponent_options' 
       .' WHERE id = '.(int)$pid; 
    $this->_db->setQuery($query); 
    $paramdata=$this->_db->loadResult(); 

    if (!empty($paramdata)) 
    { 
     $custom=json_decode($paramdata); 
     foreach ($custom as $custom_params) 
     { 
      if ($custom_params->pkey=='elemvert') $this->_oparams->elemvert=$custom_params->pvalue; 
      if ($custom_params->pkey=='elemhor') $this->_oparams->elemhor=$custom_params->pvalue; 
      if ($custom_params->pkey=='minwidth') $this->_oparams->minwidth=$custom_params->pvalue; 
      if ($custom_params->pkey=='maxwidth') $this->_oparams->maxwidth=$custom_params->pvalue; 
      if ($custom_params->pkey=='minheight') $this->_oparams->minheight=$custom_params->pvalue; 
      if ($custom_params->pkey=='maxheight') $this->_oparams->maxheight=$custom_params->pvalue; 
     } 
     return true;  
    } else { 
     return false; 
    }     
} 

는 가능한 한이 데이터를 쓰기? 코드에서

나중에 나는이 방법으로 매개 변수를 확인하십시오

... 
foreach ($custom as $custom_params) 
    $this->_oparams->{$custom_params->pkey} = $custom_params->pvalue; 
} 
... 
+1

이렇게 설명 뭔가 더에 질문의 제목을 변경하십시오

if (!empty($this->_oparams->maxheight)) $htmlout.="\t\t\t\t<input type=\"hidden\" name=\"maxheight".$rowx->id."\" id=\"maxheight".$rowx->id."\" value=\"".$this->_oparams->maxheight."\" />"; 

답변

3

가 나는 이것이 당신이 찾고있는 무엇이라고 생각 다른 혜택을 누릴 수 있습니다.
+0

대단히 고마워요, 대괄호 - 내가 PHP 객체 프로그래밍에 대해 몰랐던 많은 것들 중 하나입니다, 나는 그것을 더 많이 사용할 것입니다! –

+0

그들은 실제로 중괄호라고 불립니다. 당신은'$ {$ custom_params-> pkey} = $ custom_params-> pvalue'와 같은 것을 할 수 있으므로'$ minwidth','$ maxwidth'와 같이 vars에 접근 할 수 있습니다. 찾고있는 답이 답이라면 대답을 수락하십시오. 감사. – voldomazta

관련 문제