복붙노트

foreach 루프의 두 배열

PHP

foreach 루프의 두 배열

두 개의 배열을 사용하여 선택 상자를 생성하고 싶습니다. 하나는 국가 코드를 포함하고 다른 하나는 국가 이름을 포함합니다.

다음은 그 예입니다.

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

이 방법은 나를 위해 작동하지 않았다. 어떤 제안?

해결법

  1. ==============================

    1.

    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',
       ...
    );
    
  2. ==============================

    2.foreach는 한 번에 하나의 배열에서만 작동합니다.

    foreach는 한 번에 하나의 배열에서만 작동합니다.

    배열이 구조화 된 방식으로 배열을 키 - 값 쌍의 배열에 array_combine () 한 다음 해당 배열을 foreach 할 수 있습니다.

    foreach (array_combine($codes, $names) as $code => $name) {
        echo '<option value="' . $code . '">' . $name . '</option>';
    }
    

    또는 다른 답변에서 볼 수 있듯이 연관 배열을 대신 하드 코딩 할 수 있습니다.

  3. ==============================

    3.array_combine ()을 사용하여 배열을 통합하고 결과를 반복합니다.

    array_combine ()을 사용하여 배열을 통합하고 결과를 반복합니다.

    $countries = array_combine($codes, $names);
    
  4. ==============================

    4.연관 배열 사용 :

    연관 배열 사용 :

    $code_names = array(
                        'tn' => 'Tunisia',
                        'us' => 'United States',
                        'fr' => 'France');
    
    foreach($code_names as $code => $name) {
       //...
    }
    

    연결 배열을 사용하면 array_keys () 또는 array_values ​​()를 사용하여 이전과 똑같은 배열을 얻을 수 있기 때문에 연관 배열을 사용하는 것이 array_combine ()을 사용하는 것과는 반대로 가장 현명한 접근 방법이라고 생각합니다.

  5. ==============================

    5.왜 다차원 연관 배열로 통합하지 않습니까? 당신이 잘못 생각한 것처럼 보입니다.

    왜 다차원 연관 배열로 통합하지 않습니까? 당신이 잘못 생각한 것처럼 보입니다.

    $codes = array('tn','us','fr');
    $names = array('Tunisia','United States','France');
    

    다음과 같이됩니다.

    $dropdown = array('tn' => 'Tunisia', 'us' => 'United States', 'fr' => 'France');
    
  6. ==============================

    6.이렇게하면 배열에서 드롭 다운 메뉴가 생성되고 해당 값이 자동으로 할당됩니다.

    이렇게하면 배열에서 드롭 다운 메뉴가 생성되고 해당 값이 자동으로 할당됩니다.

    <?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>';
    
    ?>
    
    <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>
    
    <?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>';
    ?>
    
  7. ==============================

    7.array_merge를 사용하여 두 개의 배열을 결합한 다음 반복 할 수 있습니다.

    array_merge를 사용하여 두 개의 배열을 결합한 다음 반복 할 수 있습니다.

    $array1 = array("foo" => "bar");
    $array2 = array("hello" => "world");
    $both_arrays = array_merge((array)$array1, (array)$array2);
    print_r($both_arrays);
    
  8. ==============================

    8.밖으로 나가 ...

    밖으로 나가 ...

    $codes = array('tn','us','fr');
    $names = array('Tunisia','United States','France');
    

    데모

  9. ==============================

    9.

    <?php
    
    $codes = array ('tn','us','fr');
    $names = array ('Tunisia','United States','France');
    
    echo '<table>';
    
    foreach(array_keys($codes) as $i) {
    
         echo '<tr><td>';
         echo ($i + 1);
         echo '</td><td>';
         echo $codes[$i];
         echo '</td><td>';
         echo $names[$i];
         echo '</td></tr>';
    }
    
    echo '</table>';
    
    ?>
    
  10. ==============================

    10.foreach 루프 대신에 이것을 사용해보십시오 (배열의 길이가 같은 경우에만).

    foreach 루프 대신에 이것을 사용해보십시오 (배열의 길이가 같은 경우에만).

    $number = COUNT($_POST["codes "]);//count how many arrays available
    if($number > 0)  
    {  
      for($i=0; $i<$number; $i++)//loop thru each arrays
      {
        $codes =$_POST['codes'][$i];
        $names =$_POST['names'][$i];
        //ur code in here
      }
    }
    
  11. ==============================

    11.이것은 나를 위해 일했다 :

    이것은 나를 위해 일했다 :

    $codes = array('tn', 'us', 'fr');
    $names = array('Tunisia', 'United States', 'France');
    foreach($codes as $key => $value) {
        echo "Code is: " . $codes[$key] . " - " . "and Name: " . $names[$key] . "<br>";
    }
    
  12. ==============================

    12.나는 당신이 다음과 같이 할 수 있다고 생각한다.

    나는 당신이 다음과 같이 할 수 있다고 생각한다.

    $ codes = array ( 'tn', 'us', 'fr'); $ names = array ( '튀니지', '미국', '프랑스'); foreach ($ codes는 $ key => $ code) {     echo '

  13. ==============================

    13.foreach는 단일 배열에서만 작동합니다. 여러 배열을 단계별로 실행하려면 while 루프에서 each () 함수를 사용하는 것이 좋습니다.

    foreach는 단일 배열에서만 작동합니다. 여러 배열을 단계별로 실행하려면 while 루프에서 each () 함수를 사용하는 것이 좋습니다.

    while(($code = each($codes)) && ($name = each($names))) {
        echo '<option value="' . $code['value'] . '">' . $name['value'] . '</option>';
    }
    

    each ()는 배열의 현재 키와 값에 대한 정보를 반환하고 내부 포인터를 하나씩 증가 시키거나 배열의 끝에 도달하면 false를 반환합니다. 이 코드는 동일한 키를 가진 두 배열 또는 같은 종류의 요소를 가진 두 배열에 종속되지 않습니다. 두 배열 중 하나가 완료되면 루프가 종료됩니다.

  14. ==============================

    14.array_combine ()은 장바구니에서 제품 수량을 업데이트하기 위해 여러 폼 입력의 $ _POST 값을 결합하는 동안 나에게 큰 도움이되었습니다.

    array_combine ()은 장바구니에서 제품 수량을 업데이트하기 위해 여러 폼 입력의 $ _POST 값을 결합하는 동안 나에게 큰 도움이되었습니다.

  15. ==============================

    15.

    if(isset($_POST['doors'])=== true){
    $doors = $_POST['doors'];
    }else{$doors = 0;}
    
    if(isset($_POST['windows'])=== true){
    $windows = $_POST['windows'];
    }else{$windows = 0;}
    
    foreach($doors as $a => $b){
    

    이제 각 배열에 대해 $ a를 사용할 수 있습니다.

    $doors[$a]
    $windows[$a]
    ....
    }
    
  16. ==============================

    16.나는 너와 같은 문제를 이렇게 해결했다.

    나는 너와 같은 문제를 이렇게 해결했다.

    foreach(array_keys($idarr) as $i) {
     echo "Student ID: ".$idarr[$i]."<br />";
     echo "Present: ".$presentarr[$i]."<br />";
     echo "Reason: ".$reasonarr[$i]."<br />";
     echo "Mark: ".$markarr[$i]."<br />";
    }
    
  17. ==============================

    17.당신은 단일 배열 foreach 루프에 퍼팅 2 배열을 시도해야합니다 내가 2 Array를 가지고 있다고 가정 해보자. 1. $ item_nm 2. $ item_qty

    당신은 단일 배열 foreach 루프에 퍼팅 2 배열을 시도해야합니다 내가 2 Array를 가지고 있다고 가정 해보자. 1. $ item_nm 2. $ item_qty

     `<?php $i=1; ?>
    <table><tr><td>Sr.No</td> <td>item_nm</td>  <td>item_qty</td>    </tr>
    
      @foreach (array_combine($item_nm, $item_qty) as $item_nm => $item_qty)
    <tr> 
            <td> $i++  </td>
            <td>  $item_nm  </td>
            <td> $item_qty  </td>
       </tr></table>
    
    @endforeach `
    
  18. ==============================

    18.몇개의 배열도 다음과 같이 반복 할 수 있습니다.

    몇개의 배열도 다음과 같이 반복 할 수 있습니다.

    foreach($array1 as $key=>$val){ // Loop though one array
        $val2 = $array2[$key]; // Get the values from the other arrays
        $val3 = $array3[$key];
        $result[] = array( //Save result in third array
          'id' => $val,
          'quant' => $val2,
          'name' => $val3,
        );
      }
    
  19. ==============================

    19.가장 간단한 방법은 for 루프를 다음과 같이 사용하는 것입니다.

    가장 간단한 방법은 for 루프를 다음과 같이 사용하는 것입니다.

    $ codes = array ( 'tn', 'us', 'fr'); $ names = array ( '튀니지', '미국', '프랑스'); for ($ i = 0; $ i '. $ names [$ i]. ''; }

  20. ==============================

    20.이런 식의 코드는 단일 배열에 대해서만 foreach로 올바르지 않습니다.

    이런 식의 코드는 단일 배열에 대해서만 foreach로 올바르지 않습니다.

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

    대안, 다음으로 변경 :

    <?php
            $codes = array('tn','us','fr');
            $names = array('Tunisia','United States','France');
            $count = 0;
    
            foreach($codes as $code) {
                 echo '<option value="' . $code . '">' . $names[count] . '</option>';
                 $count++;
            }
    
    ?>
    
  21. ==============================

    21.그것은 나를 위해 일한다.

    그것은 나를 위해 일한다.

    $counter = 0;
    foreach($codes as $code)
    {
    $codes_array[$counter]=$code;
    $counter++;
    }
    $counter = 0;
    foreach($names as $name)
    {
    echo $codes_array[$counter]."and".$name;
    $counter++;
    }
    
  22. ==============================

    22.원하는대로 할 수 있다면 2 배열의 foreach가 다음과 같이 프로그래밍됩니다.

    원하는대로 할 수 있다면 2 배열의 foreach가 다음과 같이 프로그래밍됩니다.

    //foreach ($array1 as $key1 [,/and/~/'/-/whatever] $array2 as $key2)
        //equals:
    
        $array1 = array(); 
        $array2 = array();
    
        if (sizeof(array1) == sizeof(array2)){
    
        for ($i = 0; i < sizeof(array1) , i++){
        $key1 = $array1[$i]
        $key2 = $array2[$i]
    
        //the code
    
        }}
    

    내 솔루션은 완벽하지는 않지만 대부분의 경우 괜찮습니다.

  23. from https://stackoverflow.com/questions/4480803/two-arrays-in-foreach-loop by cc-by-sa and MIT license