2013-09-27 35 views
1

我想連接值爲一個字符串,後來被附加到一個隱藏的輸入。奇怪的迴應與foreach

這是forach循環:

<?php 
    $langid  = array(); 
    $transLang  = ''; 
    foreach($translator['langs'] as $lang) { 

     $curlang = $lang->term_id; 
     $langid[] = $curlang; 
     $transLang .= '('.$curlang.'), '; 

     // for testing 
     echo $transLang."<br />"; 
    } 
?> 
<input type="hidden" name="selectedLang" value="<?php echo $transLang; ?>" /> 

的LANGID []數組抓住一切正確
但$ transLang迴盪到輸入只示出了第一值,它是:(3),

當我使用此行:

echo $transLang."<br />"; 

這是我加入測試呼應:

(3), 
(3), (10), 
(3), (10), (12), 
(3), (10), (12), (27), 
(3), (10), (12), (27), (19), 
(3), (10), (12), (27), (19), (20), 

最後一個是完整的字符串後的foreach完成乳寧而T3他輸入的字段值永遠只是第一次運行的意思(3),

任何想法爲什麼會發生這種情況?

回答

1

我試圖運行一個虛擬測試。這裏是我的代碼

<?php 

    $a = ""; 
    $loop = array("1","2","3","4","5","6","7","8","9"); 
    foreach($loop as $i){ 
     $a .= "($i),"; 
    } 


?> 
<input type="hidden" name="selectedLang" value="<?php echo $a; ?>" /> 

,我得到下面的輸出

<input type="hidden" name="selectedLang" value="(1),(2),(3),(4),(5),(6),(7),(8),(9),"> 

,或者您的CA使用一個額外的array來存儲這些stringsecho最後index

所以您的代碼將改爲這一個

<?php 
    $langid  = array(); 
    $strings = array(); 
    $transLang  = ''; 
    foreach($translator['langs'] as $lang) { 

     $curlang = $lang->term_id; 
     $langid[] = $curlang; 
     $transLang .= '('.$curlang.'), '; 
     $strings[] = $transLang; 
     // for testing 
     //echo $transLang."<br />"; 
    } 
?> 
<input type="hidden" name="selectedLang" value="<?php echo end($strings); ?>" /> 

這兩個方法我測試過我的虛擬值,它對我來說工作正常。 嘗試先使用第二種方法

+0

感謝您的快速響應...我知道它應該工作(我的方法),但它doesent ......你爲什麼要包裝在結束$字符串( )?不應該只是迴應最後一個值?回顯數組的問題是爲什麼我沒有使用數組作爲該輸入中的值。我需要一個字符串。 - 無論如何,因爲我在那裏,不應該有任何isuse與我的foreach。只是一個奇怪的問題。 –

+0

'end()'會得到最後一個索引數據,它將以字符串形式輸出 – Mubin

1

您可以使用陣列內爆爲: http://php.net/manual/en/function.implode.php

+0

謝謝k.tarkin ...我知道這一點。這是我錯過/不知道關於foreach的事情,但我想它只是一個奇怪的問題。謝謝你的幫助。 –