Concatenate string of variables

Asked

Viewed 81 times

-2

I have a problem, I need to concatenate some variables here in PHP and they are strings, but the problem is that they are inside "ifs" so when it is not set, it says that the variable is Undefined time to concatenate. Below my code:

if ($sinal==="sim" || $parcelada==='sim' || $vista==='sim' || $automovel==='sim' || $_POST['imovelPagamento']==='sim' || $entrada==="sim" || $fgts==="sim" || $financiado==="sim"){

        $p20 = ': O valor do imóvel (cláusula 6ª, caput) fica inalterável,
independentemente de qualquer alteração que sofra o valor';
if($sinal==='sim'){
    $p21 = ' do sinal (cláusula 6ª, '.(array_search($sinalValor , $topicosClausula6)+1).'),';
} if($parcelada==='sim'){
    $p22 = ' da parcela (cláusula 6ª, '.(array_search($parceladaValorTexto , $topicosClausula6)+1).'),';
}if($entrada==="sim"){
    $p23 = ' da entrada (cláusula 6ª, '.(array_search($entradaValor , $topicosClausula6)+1).'),';
}if($vista==='sim'){
    $p24 = ' do valor à vista (cláusula 6ª, '.(array_search($vistaValor , $topicosClausula6)+1).'),';
}if($fgts==="sim"){
    $p25 = ' do FGTS (cláusula 6ª, '.(array_search($fgtsValor , $topicosClausula6)+1).'),';
}if($automovel==='sim'){
    $p26 = ' do valor do automóvel (cláusula 6ª, '.(array_search($automovelValor , $topicosClausula6)+1).'),';
}if($_POST['imovelPagamento']==='sim'){
    $p27 = ' do valor do imóvel (cláusula 6ª, '.(array_search($imovelPagValor , $topicosClausula6)+1).'),';
}if($financiado==="sim"){
    $p28 = ' do valor financiado (cláusula 6ª, '.(array_search($financiadoValor , $topicosClausula6)+1).')';
} 

$paragrafo2 = $p20.$p21.$p21.$p22.$p23.$p24.$p25.$p26.$p27.$p28.';' ; //aqui esta o problema, ele concatena elas sempre, porem quando um if e falso a variavel dele fica undefined.

    array_push($paragrafos, $paragrafo2);
}
  • 2

    Augusto, have you considered initializing all of them with an empty string value?

2 answers

3

Put a else in each if and initialize variables with the value '' so it will always have a value.

Even the if s are chained.

In fact it would be even better to use the conditional operator and probably a array instead of so many variables and concatenate into a loop. You can use array at other points too. Do something like this:

$p21 = $sinal === 'sim' ? $p21 = ' do sinal (cláusula 6ª, '.(array_search($sinalValor , $topicosClausula6)+1).'),' : '';

Even better:

$p[21] = $sinal === 'sim' ? $p21 = ' do sinal (cláusula 6ª, '.(array_search($sinalValor , $topicosClausula6) + 1).'),' : '';

I put in the Github for future reference.

  • thank you very much !

  • See on [tour] the best way to say thank you.

2


If you do not enter the IF the value of your variable is udefined. First start your variables with empty values:

/* Código a ser adicionado*/
    $p20="";
    $p21="";
    $p21="";
    $p22="";
    $p23="";
    $p24="";
    $p25="";
    $p26="";
    $p27="";
    $p28="";

    if ($sinal==="sim" || $parcelada==='sim' || $vista==='sim' || $automovel==='sim' || $_POST['imovelPagamento']==='sim' || $entrada==="sim" || $fgts==="sim" || $financiado==="sim"){

            $p20 = ': O valor do imóvel (cláusula 6ª, caput) fica inalterável,
    independentemente de qualquer alteração que sofra o valor';
    if($sinal==='sim'){
        $p21 = ' do sinal (cláusula 6ª, '.(array_search($sinalValor , $topicosClausula6)+1).'),';
    } if($parcelada==='sim'){
        $p22 = ' da parcela (cláusula 6ª, '.(array_search($parceladaValorTexto , $topicosClausula6)+1).'),';
    }if($entrada==="sim"){
        $p23 = ' da entrada (cláusula 6ª, '.(array_search($entradaValor , $topicosClausula6)+1).'),';
    }if($vista==='sim'){
        $p24 = ' do valor à vista (cláusula 6ª, '.(array_search($vistaValor , $topicosClausula6)+1).'),';
    }if($fgts==="sim"){
        $p25 = ' do FGTS (cláusula 6ª, '.(array_search($fgtsValor , $topicosClausula6)+1).'),';
    }if($automovel==='sim'){
        $p26 = ' do valor do automóvel (cláusula 6ª, '.(array_search($automovelValor , $topicosClausula6)+1).'),';
    }if($_POST['imovelPagamento']==='sim'){
        $p27 = ' do valor do imóvel (cláusula 6ª, '.(array_search($imovelPagValor , $topicosClausula6)+1).'),';
    }if($financiado==="sim"){
        $p28 = ' do valor financiado (cláusula 6ª, '.(array_search($financiadoValor , $topicosClausula6)+1).')';
    } 

    $paragrafo2 = $p20.$p21.$p21.$p22.$p23.$p24.$p25.$p26.$p27.$p28.';' ; //aqui esta o problema, ele concatena elas sempre, porem quando um if e falso a variavel dele fica undefined.

        array_push($paragrafos, $paragrafo2);
    }

Another way to do it is to use only one variable to concatenate:

$paragrafo2="";

if ($sinal==="sim" || $parcelada==='sim' || $vista==='sim' || $automovel==='sim' || $_POST['imovelPagamento']==='sim' || $entrada==="sim" || $fgts==="sim" || $financiado==="sim"){
    $paragrafo2 = $paragrafo2.': O valor do imóvel (cláusula 6ª, caput) fica inalterável,independentemente de qualquer alteração que sofra o valor';
if($sinal==='sim'){
    $paragrafo2 = $paragrafo2.' do sinal (cláusula 6ª, '.(array_search($sinalValor , $topicosClausula6)+1).'),';
} if($parcelada==='sim'){
    $paragrafo2 = $paragrafo2.' da parcela (cláusula 6ª, '.(array_search($parceladaValorTexto , $topicosClausula6)+1).'),';
}if($entrada==="sim"){
    $paragrafo2 = $paragrafo2.' da entrada (cláusula 6ª, '.(array_search($entradaValor , $topicosClausula6)+1).'),';
}if($vista==='sim'){
    $paragrafo2 = $paragrafo2.' do valor à vista (cláusula 6ª, '.(array_search($vistaValor , $topicosClausula6)+1).'),';
}if($fgts==="sim"){
     $paragrafo2 = $paragrafo2.' do FGTS (cláusula 6ª, '.(array_search($fgtsValor , $topicosClausula6)+1).'),';
}if($automovel==='sim'){
    $paragrafo2 = $paragrafo2.' do valor do automóvel (cláusula 6ª, '.(array_search($automovelValor , $topicosClausula6)+1).'),';
}if($_POST['imovelPagamento']==='sim'){
     $paragrafo2 = $paragrafo2.' do valor do imóvel (cláusula 6ª, '.(array_search($imovelPagValor , $topicosClausula6)+1).'),';
}if($financiado==="sim"){
    $paragrafo2 = $paragrafo2.' do valor financiado (cláusula 6ª, '.(array_search($financiadoValor , $topicosClausula6)+1).')';
} 

array_push($paragrafos, $paragrafo2);
  • our do not believe that we did not think of that kkkkkk thank you very much ! salvou1

Browser other questions tagged

You are not signed in. Login or sign up in order to post.