[RESOLVIDO] Nome do campo controle dentro de uma variável

$conteudo = ‘A’;
$VarNome = ‘conteudo’;
echo $$VarNome;

tem como fazer isso com os campos do controle pra tratar em um loop ?

for ($n = 0; $n <= 10; $n++) {
$sCp_ID_CCU="{ID_CCUSTO_".$n."}";
echo $$sCp_IDCCU;
echo ‘
’;
}

tentei assim mas não funciona.

dessa forma que vc está fazendo não funciona.

é verdade, não funciona.

Tente:

for ($n = 1; $n <= 10; $n++) {
  $_field = "ID_CCUSTO_$n";
  $sCp_ID_CCU = $this->$_field;
  echo $sCp_IDCCU,'<br>';
}
1 Curtida

vou testar…,. valeu a força.

Consegui, é mais fácil do que parece:

$campo="{campo1}";
echo $campo; - Retorna o conteúdo
$campo=’{campo1}’;
echo $campo; - Retorna o nome do campo assim: this->campo1
ou seja
os nomes dos campos entre apóstrofos (’) retorna o nome do campo e com aspas (") retorna o conteúdo.

Criei um controle teste com 3 campos ( campo1, campo2 e campo3 )
em onValidate.

$a=array(’{campo1}’,’{campo2}’,’{campo3}’);
$b=array("{campo1}","{campo2}","{campo3}");

for ($n = 0; $n <= 2; $n++) {
echo ‘Campo:’.$a[$n].’ conteúdo:’.$b[$n].’
’;
}

resultado:
Campo:$this->campo1 conteúdo:TESTE CAMPO 1
Campo:$this->campo2 conteúdo:TESTE CAMPO 2
Campo:$this->campo3 conteúdo:TESTE CAMPO 3

  • só um detalhe, não dá pra compor o nome na variável q não funciona precisa ser digitado.
    exemplo:
    $n=1;
    $campo = “{campo$n}”; // assim não funciona.
    echo $campo;

$campo = “{campo1}”; // assim beleza
echo $campo;

mas aí o nome do campo não está dinâmico.

Esse abaixo eu testei:

for ($n = 1; $n <= 3; $n++) {
    eval('$_field =  $this->campo_'.$n.';');
    echo $_field,'<br>';
}

Também funciona:

for ($n = 1; $n <= 3; $n++) {
  $_field = "campo_$n";
  $sCp_IDCCU = $this->$_field;
  echo $sCp_IDCCU,'<br>';
}
2 Curtidas