2014-05-06 52 views
-1

我有這樣的陣列:PHP語法

$output = array('test' => "<b>Blah blah</b>", 
       'test2' => "<b>Hello World</b> 
           if ($foo = 4){ 
            echo "!";  }", 

);

如何在數組中添加任何PHP語句?

示例:帶有if語句的「test2」。

更新(這裏是我試圖扔到陣列實際的代碼):

> <select id='user1' name='user1'> 
>         <option selected disabled>Select User</option>"; 
>       for($x=0;$x<$arrlength2;$x++){ 
>       if ((isset($_POST['user1'])) && ($_POST['user1'] == $arraydt2[$x])) 
>       { 
>        echo "<option selected='" . $arraydt2[$x] . "' value=\"$arraydt[$x]\">$arraydt2[$x]</option>";} 
>       else  
>        echo "<option value=\"$arraydt2[$x]\">$arraydt2[$x]</option>"; 
>       } 
>       echo "</select> 
+3

總得問:爲什麼?代碼示例爲博客或東西?無論如何,你必須像其他任何字符串一樣逃避它。 –

+0

使用AJAX顯示這些數據,但這個外部頁面正在做所有的工作。我打算有一個for循環來填充數組中的下拉列表。 – theflarenet

+0

在字符串上下文中不能有代碼。 (除了一些例外,但我不認爲這是明智的,除非你熟悉基本的語法約束。) – mario

回答

2

你可以用這樣的代碼來實現相同的:

$output = array('test' => "<b>Blah blah</b>", 
       'test2' => "<b>Hello World</b>".(($foo == 4) ? '!' : '')); 

這就是所謂的三元運營商。更多關於它:http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

如果你想達到的結果作爲修改的問題,你應該簡單的分配$價值變量,然後$其分配給數組如下:

$variable = ''; 

if ($a == '...') { 
    $variable .= '...'; 
} 
if ($b == '...' and $c != '...') { 
    $variable .='...'; 
} 
$output = array('test' => "<b>Blah blah</b>", 
       'test2' => $variable); 

); 
+0

我已經更新了我試圖在數組中執行的實際代碼的問題。我不會現在可能:( – theflarenet

+0

我已經添加了另一種解決方案來回答你的情況 –

0

不太清楚你是什麼試圖完成,但考慮到你最近的更新,這聽起來像你不想把php syntax放入你的數組中,你想把動態生成的html放到你的數組中。也許是這樣的:

$output = array(); 
$output['test'] = "<b>Blah blah</b>"; 
$output['test2'] = "<b>Hello World</b>"; 

if ($foo == 4) { 

    $output['test2'] .= "<select id='user1' name='user1'>"; 
    $output['test2'] .= "<option selected disabled>Select User</option>"; 

    for($x=0;$x<$arrlength2;$x++) { 
     if ((isset($_POST['user1'])) && ($_POST['user1'] == $arraydt2[$x])) { 
      $output['test2'] .= "<option selected='" . $arraydt2[$x] . "' value=\"$arraydt[$x]\">$arraydt2[$x]</option>";} 
     else  
      $output['test2'] .= "<option value=\"$arraydt2[$x]\">$arraydt2[$x]</option>"; 
    } 

    $output['test2'] .= "</select>"; 

} 
+0

問題的第一部分與第二個更新的部分無關 – ElefantPhace

+0

@ElefantPhace你是什麼意思?然後,如果他的條件是真的,他想要添加更多的數據到一個元素,第二部分闡明他要添加的數據是一個動態生成的'