2013-03-03 57 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) { 
    //.... 
}