2013-03-03 28 views
0

我想創建一個標有我的數組值的單選按鈕。我所能做的就是將它們全部打印出來。我可以用什麼來訪問我的數組(動態數組)除了索引,因爲我不知道我的語言目錄內的文件的順序和數量?謝謝!php數組到單選按鈕

輸入

english.xml,mandarin.xml,french.xml 

這些文件被保存在語言方面,我將在我的單選按鈕形式使用文件名作爲標籤。

$files = glob("languages/*.xml"); 

foreach($files as $file){ 

    $file = substr($file, 10); //removes "languages/" 
    $file = substr_replace($file, "", -4); //removes ".xml" 
    ?> 

    <p><?=$file?></p> // prints out the filename 
    <?}?> 

輸出

<form action=""> 
<input type="radio" name="lang" value="english">english 
<input type="radio" name="lang" value="mandarin">mandarin 
<input type="radio" name="lang" value="french">french 
</form> 

對不起我的英文不好,我希望我解釋得很好。

+0

它的模板真的很難理解,你想要什麼現在打印呢?可能請顯示輸入數組並輸出你想要的? – Starx 2013-03-03 10:45:33

+0

更新 - @Starx謝謝你的回答! – user2128593 2013-03-03 11:08:47

+0

好的,echo $文件給你什麼? – Starx 2013-03-03 11:18:31

回答

1

使用[]可以將元素添加到數組中。訂單將是您放置它們的順序,這與您循環訪問的$files陣列相同。

pathinfo函數可以獲取文件的名稱(不含目錄或擴展名)。

function getLangs() { 
    $langs = array(); 
    $files = glob("languages/*.xml"); 

    foreach($files as $file) { 
     $lang = pathinfo($file, PATHINFO_FILENAME); 
     $langs[] = $lang; 
    } 

    return $langs; 
} 

使用

$langs = getLangs(); 

foreach ($langs as $lang) { 
    echo "<label><input type='radio' name='lang' value='$lang' /> $lang</label>"; 
} 

而不是使用echo你可以建立像

<form action=''> 
<?php foreach ($langs as $lang): ?> 
    <label><input type="radio" name="lang" value="<?= $lang ?> /> value="<?= $lang ?></label> 
<?php endforeach; ?> 
</form> 
+0

請注意,不需要使用函數,但將* do *與* view *分開是一種很好的做法。 – 2013-03-03 11:15:27

0

您也可以使用foreach訪問數組的鍵。像這樣:

foreach($files as $key => $value) { 
    //.... 
}