2017-03-17 9 views
1

を再評価し、私は三項演算子を使用してテキストのブロックを持っているが何か:PHP:このような三項の変数の内部演算子と変数

出力テキスト「このオプションは、[を強化/強化しない]すべき
$base ="This option". ($enhances == 1? 'enhances' : 'does not enhance') ."your". ($ability==1? 'gaming' : 'coding') ." abilities."; 

あなたの[ゲーム/コーディング]能力」を設定します。

元のテキストが長く、変数によって複数の単語が変更されることがあります。基本テキストをそのまま保ち、三項演算子で使用される変数値を変更して変更を行いたいと思います。これは、ベーステキストが何度も変更されるため、1つの場所にのみ変更したいからです。

私はその後、ベーステキストを変更するには変数のみを使用して、HTMLテーブルを作成したいと思います:

$enhances=1; 
$ability=0; 
echo " 
<tr> 
    <td><div class=\"factors\">Enhances = 1<br> Ability = 0</div></td> 
    <td><div class=\"message\">$base</div></td> 
</tr> 
"; 
$ability=1; 
$enhances=1; 
echo " 
<tr> 
    <td><div class=\"factors\">Enhances = 1 <br> Ability = 1</div></td> 
    <td><div class=\"message\">$base</div></td> 
</tr> 

"; 

この方法を、これまでこのような何か出力:

Enhances = 1 
Ability = 0 
This option does not enhance your coding abilities. 
Enhances = 1 
Ability = 1 
This option does not enhance your coding abilities. 

を再する方法はあります変数を設定した後に$ base変数を評価しますか? PHPでこの種のテキスト書式設定を行う正しい方法は何ですか?私はPHPの初心者です。だから、PHPで何ができ、何ができないのか分かりません。または私の言葉が正しい場合でも。うまくいけば私は十分に記述的だった。

同様のポストが、変数内の1つの変数のみで:PHP: Evaluating variable in string, and then changing value of variable

答えて

2

この方法を試してください。

$enhances=1; 
$ability=0; 
echo ' 
<tr> 
    <td><div class="factors">Enhances = 1<br> Ability = 0</div></td> 
    <td><div class="message">'.getStatement($enhances, $ability).'</div></td> 
</tr>'; 

$ability=1; 
$enhances=1; 

echo ' 
<tr> 
    <td><div class="factors">Enhances = 1 <br> Ability = 1</div></td> 
    <td><div class="message">'.getStatement($enhances, $ability).'</div></td> 
</tr>'; 

function getStatement($enhances, $ability) { 
    return "This option". ($enhances == 1? ' enhances ' : 'does not enhance') ."your". ($ability==1? ' gaming ' : ' coding') ." abilities."; 
} 
1

あなたは、その後、すなわち、関数としてbaseを定義

function fn($enhances, $ability){ 
    return "This option". ($enhances == 1? 'enhances' : 'does not enhance') ."your". ($ability==1? 'gaming' : 'coding') ." abilities."; 
} 

と可能性エコーステートメントでそれを使用してください。

echo "something ".fn($enhances, $ability)."something else"; 
0

あなたができる最も簡単なことは、これを関数にラップすることです。

$ability=1; 
$enhances=1; 

echo " 
<tr> 
    <td><div class=\"factors\">Enhances = 1 <br> Ability = 1</div></td> 
    <td><div class=\"message\"> " . write_message($ability, $enhances) . "</div></td> 
</tr> 
"; 
0

は、あなたには、いくつかの異なる文字列をフォーマットするたびに新しい関数を作成するために、私には少しやり過ぎだ、次のように

function write_message($ability, $enhances) { 
    $message = 'This option ' . ($enhances ? 'enhances' : 'does not enhance') . ' your ' . ($ability ? 'gaming' : 'coding') . ' abilities'; 
    return $message; 
} 

そして、それを使用しています。 PHPにはすでにそれが可能です。

<?php 

$enhanceText = [ 
    'enhances', 
    'does not enhance', 
]; 
$abilityText = [ 
    'gaming', 
    'coding', 
]; 

$base = "This option %s your %s abilities<br />"; 

$enhances = 0; 
$ability = 0; 
printf($base, $enhanceText[$enhances], $abilityText[$ability]); 

$enhances = 1; 
$ability = 0; 
printf($base, $enhanceText[$enhances], $abilityText[$ability]); 

$enhances = 0; 
$ability = 1; 
printf($base, $enhanceText[$enhances], $abilityText[$ability]); 

$enhances = 1; 
$ability = 1; 
printf($base, $enhanceText[$enhances], $abilityText[$ability]); 

出力::あなたはそうのようにこれを達成するためにprintfを使用することができます

This option enhances your gaming abilities 
This option does not enhance your gaming abilities 
This option enhances your coding abilities 
This option does not enhance your coding abilities 
関連する問題