【问题标题】:Foreach two array in one time [duplicate]一次foreach两个数组[重复]
【发布时间】:2023-03-17 06:30:01
【问题描述】:

我想使用两个数组生成一个选择框,一个包含国家代码,另一个包含国家名称。

这是一个例子:

<?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


【解决方案1】:

必须是 2 个数组?如果你只使用关联数组会更容易。

喜欢:

$countries = array('tn'=> "Tunisia", "us"=>'United States',"fr"=>'France');
foreach($countries as $code=>$name) {
     echo '<option value="' . $code . '">' . $name . '</option>';    
}

如果你已经有了这两个数组,你可以将它们组合起来:

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

这是一个演示:http://codepad.org/nYjCk3uQ

【讨论】:

    【解决方案2】:

    如果你的数组大小相同,你可以像下面这样使用

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

    【讨论】:

      【解决方案3】:

      如果两个数组都被完美索引,那么你可以单独迭代一个数组

      for($i=0; $i<count($codes);$i++) {
      
      echo '<option value="' . $code[$i] . '">' . $name[$i] . '</option>';
      
      }
      

      这只有在两个数组的值都有匹配的索引时才有效

      【讨论】:

        【解决方案4】:

        全部经过全面测试

        从数组中创建动态下拉列表的 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>';
        ?>
        

        【讨论】:

          【解决方案5】:
          foreach( $codes as $index => $code ) {
             echo '<option value="' . $code . '">' . $names[$index] . '</option>';
          }
          

          【讨论】:

            【解决方案6】:

            对两个数组使用 for 循环:

            $codes = array('tn','us','fr');
            $names = array('Tunisia','United States','France');
            $i = 0;
            $length = count($codes);
            for($i;$i<$length;$i++) {
                echo '<option value="' . $code[$i] . '">' . $name[$i] . '</option>';
            }
            

            这对你有用。

            这里有另一种方法:

            $codes = array('tn','us','fr');
            $names = array('Tunisia','United States','France');
            $newarr = array_combine($codes,$names);
            foreach($newarr as $index => $value){
                echo '<option value="' . $index . '">' . $value . '</option>';
            }
            

            【讨论】:

              【解决方案7】:

              我会这样处理它:

              $names = array('Tunisia' : 'tn','United States' :'us','France': 'fr');
              foreach($names as $key=>$value) {
              echo '<option value="' . $value . '">' . $key . '</option>';
              }
              

              另一种方式可以是:

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

              【讨论】:

                【解决方案8】:

                试试这个

                 foreach( $codes as $index => $code ) {
                    echo '<option value="' . $code . '">' . $names[$index] . '</option>';
                     }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-06-04
                  • 2016-08-08
                  • 2012-12-18
                  • 2015-04-04
                  • 2019-07-22
                  相关资源
                  最近更新 更多