2013-03-03 3 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

그 같은 템플릿을 만들 수 echo를 사용하여 인쇄? 입력 배열과 출력을 보여줄 수 있습니까? – Starx

+0

- @Starx에 대한 업데이트를 보내 주셔서 감사합니다! – user2128593

+0

좋아, echo $ file이 당신에게주는 것은 무엇입니까? – Starx

답변

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>"; 
} 

사용하는 대신에 당신은 당신이 원하는 것을 이해하기 정말 열심히

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

함수를 사용할 필요는 없지만 *보기 *에서 * do *를 분리하는 것이 좋습니다. –

0

foreach를 사용하여 배열 키에 액세스 할 수 있습니다. 이렇게 :

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