[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>';
?>