2017-04-06 3 views
1

$someVarには$testの変数が含まれています。異なる場合には値を変更する必要があります。問題は、$someVarがswitchステートメント内で更新されないということです。これは常に空$someVar出力とThis isの代わりに、This is some textエコーPHPスイッチが変数を更新していない

<?php 
    $someVar = ''; 
    $test = '<div class="test">This is ' . $someVar . '</div>'; 
    $param = 1; 
    switch ($param) 
    { 
     case ($param == 1): 
      $someVar = 'some text'; 
      echo $test; 
     break; 
    }; 
?> 

:ここに私のコードです。私はそれがスコープの問題だと推測しているので、どんな助けにも感謝しています。

+0

これは、$ someVarが最初は空であり、$ testに空文字列で割り当てられているからです。 – JayIbe

答えて

4

$someVarが空の場合、その時点で$testと定義しました。

$someVar = ''; 
$test = '<div class="test">This is ' . $someVar . '</div>'; 

変更これに:

<?php 
    $someVar = ''; 
    $test = '<div class="test">This is ' . $someVar . '</div>'; 
    $param = 1; 
    switch ($param) { 
     case ($param == 1): 
      $someVar = 'some text'; 
      echo $test; 
      break; 
    }; 
?> 

この:

<?php 

$someVar = ''; 
$param = 1; 
switch ($param) 
{ 
    case 1: 
     $someVar = 'some text'; 
     break; 
}; 
$test = '<div class="test">This is ' . $someVar . '</div>'; 
echo $test; 
?> 
+2

ああ、ありがとう、はるかに明確です。 – g5wx

+0

@ g5wxようこそ... :) –

2

あなたは$テスト変数データを更新したい場合は、以下のように$テスト変数を更新する必要があります -

<?php 

$someVar = ''; 
$param = 1; 
switch ($param) 
{ 
    case 1: 
     $someVar = 'some text'; 
     $test = '<div class="test">This is ' . $someVar . '</div>'; 
     break; 
     case 2: 
     $someVar = 'some text another'; 
     $test = '<div class="test">This is ' . $someVar . '</div>'; 
     break; 
}; 
echo $test; 
?> 
+0

ええ、私はこの方法を避けようとしていたので、$ testの中に要素を一度しか定義できません。 – g5wx

関連する問題