[php] foreach 루프의 두 배열
selectbox
하나는 국가 코드를 포함하고 다른 하나는 국가 이름을 포함하는 두 개의 배열을 사용하여 생성하고 싶습니다 .
다음은 예입니다.
<?php
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
foreach( $codes as $code and $names as $name ) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
?>
이 방법은 저에게 효과적이지 않았습니다. 어떤 제안?
답변
foreach( $codes as $code and $names as $name ) { }
그것은 유효하지 않습니다.
당신은 아마 이런 것을 원할 것입니다 …
foreach( $codes as $index => $code ) {
echo '<option value="' . $code . '">' . $names[$index] . '</option>';
}
또는 코드를 $names
배열 의 키로 만드는 것이 훨씬 쉬울 것입니다 .
$names = array(
'tn' => 'Tunisia',
'us' => 'United States',
...
);
답변
foreach
한 번에 하나의 어레이에서만 작동합니다.
배열이 구조화되는 방식에 따라 array_combine()
키-값 쌍의 배열로 만든 다음 foreach
단일 배열로 만들 수 있습니다.
foreach (array_combine($codes, $names) as $code => $name) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
또는 다른 답변에서 볼 수 있듯이 연관 배열을 대신 하드 코딩 할 수 있습니다.
답변
사용 array_combine()
결과를 통해 함께하고으로 반복 배열을 융합.
$countries = array_combine($codes, $names);
답변
연관 배열 사용 :
$code_names = array(
'tn' => 'Tunisia',
'us' => 'United States',
'fr' => 'France');
foreach($code_names as $code => $name) {
//...
}
연관 배열을 사용하는 것이 사용하는 것보다 가장 현명한 접근 방식이라고 생각합니다. array_combine()
일단 연관 배열이 있으면 단순히 사용 array_keys()
하거나 array_values()
이전에 사용했던 것과 정확히 동일한 배열을 얻을 수 있기 때문입니다.
답변
array_map도 이것에 좋은 것 같습니다.
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
array_map(function ($code, $name) {
echo '<option value="' . $code . '">' . $name . '</option>';
}, $codes, $names);
기타 이점은 다음과 같습니다.
-
한 배열이 다른 배열보다 짧으면 콜백이
null
값을 수신 하여 간격을 채 웁니다. -
2 개 이상의 배열을 사용하여 반복 할 수 있습니다.
답변
다차원 연관 배열 로 통합하지 않는 이유는 무엇 입니까? 이 잘못에 대해 생각하는 것 같습니다.
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
된다 :
$dropdown = array('tn' => 'Tunisia', 'us' => 'United States', 'fr' => 'France');
답변
모두 완전히 테스트 됨
배열에서 동적 드롭 다운을 만드는 3 가지 방법.
이렇게하면 어레이에서 드롭 다운 메뉴가 생성되고 해당 값이 자동으로 할당됩니다.
방법 # 1 (정상 배열)
<?php
$names = array('tn'=>'Tunisia','us'=>'United States','fr'=>'France');
echo '<select name="countries">';
foreach($names AS $let=>$word){
echo '<option value="'.$let.'">'.$word.'</option>';
}
echo '</select>';
?>
방법 # 2 (정상 배열)
<select name="countries">
<?php
$countries = array('tn'=> "Tunisia", "us"=>'United States',"fr"=>'France');
foreach($countries as $select=>$country_name){
echo '<option value="' . $select . '">' . $country_name . '</option>';
}
?>
</select>
방법 # 3 (연관 배열)
<?php
$my_array = array(
'tn' => 'Tunisia',
'us' => 'United States',
'fr' => 'France'
);
echo '<select name="countries">';
echo '<option value="none">Select...</option>';
foreach ($my_array as $k => $v) {
echo '<option value="' . $k . '">' . $v . '</option>';
}
echo '</select>';
?>