Foreach两个数组一次

时间:2013-08-07 05:18:48

标签: php

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

这是一个例子:

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

}

?>

这种方法对我不起作用。有什么建议吗?

由于

8 个答案:

答案 0 :(得分:5)

它必须是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

答案 1 :(得分: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    
}

?>

答案 2 :(得分:2)

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

for($i=0; $i<count($codes);$i++) {

echo '<option value="' . $code[$i] . '">' . $name[$i] . '</option>';

}

只有当两个数组的值都匹配

时才会有效

答案 3 :(得分:2)

全部经过全面测试

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

答案 4 :(得分:1)

对两个数组使用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>';
}

答案 5 :(得分:1)

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

答案 6 :(得分:0)

我会这样做:

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

答案 7 :(得分:0)

试试这个

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