2011-01-06 84 views
0

我在想,如果像下面這樣會在PHP中有可能:在PHP中,是否可以使用條件變量替換?

<?php echo "Hello {isset($name) ? $name : 'World'}!\n"; ?> 

或者我需要做下面的?

<?php echo "Hello " . (isset($name) ? $name : 'World') . "!\n"; ?> 

總的來說,我更喜歡拼接替代,因爲我發現字符串連接可以使串困難,使它們過長的閱讀。

其中的上下文是我決定選擇標記中的哪個選項應根據數據庫查詢默認選擇。

完整的上下文:

<?php 
echo " 
<form action='add_demographics.php' method='post'> 
    <table> 
     <input type=hidden name=userId value='{$_SESSION['username']}'/> 
     <tr><td>User ID:</td><td>{$_SESSION['username']}</td></tr>"; 

foreach ($inputLabels as $i => $value) 
{ 
    echo " 
     <tr> 
     <td>{$value['text']}</td> 
     <td><select name=$i>"; 

    foreach ($value["options"] as $optionName => $optionValue) 
    { 
    echo " 
      <option value=$optionValue {($result[$i]==$optionValue ? ' selected=true' : '')}>$optionValue</option>"; 
    } 
    echo " 
      </select></td> 
     </tr>"; 
} 

echo " 
     <tr><td><input type='submit' name='submit' value='Submit' /></td></tr> 
    </table> 
</form>"; 
?> 
+0

我認爲你想要做的事情是不可能在一個字符串內,不。 – 2011-01-06 16:57:47

+0

@Pekka:沙丘正在使用{},所以它會正常工作 – shankhan 2011-01-06 17:00:01

+0

@shankhan:精心製作?據我所知,字符串內的`{}`轉義並不意味着您可以使用任意的表達式並對其進行評估。 – 2011-01-06 17:00:59

回答

0

你可以做這樣的事情:

$default = "World"; 
$name = "Dunes"; 
echo "Hello {${isset($name) ? 'name' : 'default'}}"; 

從webbiedave UPDATE:

「永遠不要做這個,因爲它是絕對殘暴編碼的做法是使用三元運算符來引用扔掉變量變量只是爲了避免串聯!

2

不,不能這樣做。你需要在字符串和concat之外進行。 PHP在字符串中唯一要做的就是查找和評估一個$ var(不是表達式) - 如果使用雙引號或者等價的heredoc(php不會用單引號評估變量)

1

不,它不是'你可以按照你的要求去做。

一個解決您的具體問題,但是,可能是一個變量,在foreach循環的頂部分配給持有該選項是否應該被選中,然後回顯變量作爲輸出的一部分:

foreach ($value["options"] as $optionName => $optionValue) 
{ 
    $selected = $result[$i] == $optionValue ? "selected='selected'" : ""; 
    echo " 
     <option value=$optionValue $selected>$optionValue</option>"; 
} 
0

給出你想要做的事情。我想說

$string = isset($name) ? $name : 'World'; 
$result = "Hello $string!\n"; 
echo $result; 
1
<? 
    function is($var,$sub){ 
     return isset($var)?$var:$sub; 
    } 

    echo 'Hello, '.is($name,'World').'!\r\n'; 

    $name = 'Bob'; 

    echo 'Hello, '.is($name,'World').'!\r\n'; 
?> 

也許對短期交給它?

0

這是從來沒有實際需要。
瞭解如何使用模板。 HTML應該是HTML,而不是一些抽象的數據HAR用PHP編碼

<form action='add_demographics.php' method='post'> 
    <table> 
     <input type=hidden name=userId value='<?=_h($_SESSION['username'])?>'/> 
     <tr><td>User ID:</td><td><?=_h($_SESSION['username'])?></td></tr> 
<? foreach ($inputLabels as $i => $value): ?> 
     <tr> 
     <td><?=_h($value['text'])?></td> 
     <td><select name="<?=$i?>"> 
<? foreach ($value["options"] as $optionName => $optionValue): ?> 
      <option value="<?=$optionValue?>" <? if ($result[$i]==$optionValue): ?> selected=true<? endif ?>> 
       <?=$optionValue?> 
      </option> 
<? endforeach ?> 
      </select></td> 
     </tr> 
<? endforeach ?> 
     <tr><td><input type='submit' name='submit' value='Submit' /></td></tr> 
    </table> 
</form> 
相關問題