php - foreach循环中的两个数组
我想使用两个数组生成selectbox,一个包含国家/地区代码,另一个包含国家/地区名称。
这是一个例子:
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
foreach( $codes as $code and $names as $name ) {
echo '' . $name . '';
}
?>
这种方法对我不起作用。 有什么建议?
medk asked 2019-04-23T19:46:33Z
22个解决方案
129 votes
foreach( $codes as $code and $names as $name ) { }
那是无效的。
你可能想要这样的东西......
foreach( $codes as $index => $code ) {
echo '' . $names[$index] . '';
}
或者,使代码成为您的$names阵列的关键要容易得多......
$names = array(
'tn' => 'Tunisia',
'us' => 'United States',
...
);
alex answered 2019-04-23T19:46:55Z
73 votes
array_combine()一次只能在一个阵列上运行。
你的数组结构的方式,你可以array_combine()他们成一个键值对数组然后foreach那个单个数组:
foreach (array_combine($codes, $names) as $code => $name) {
echo '' . $name . '';
}
或者如其他答案所示,您可以改为对关联数组进行硬编码。
BoltClock answered 2019-04-23T19:47:34Z
22 votes
使用array_combine()将阵列融合在一起并迭代结果。
$countries = array_combine($codes, $names);
Ignacio Vazquez-Abrams answered 2019-04-23T19:47:59Z
6 votes
使用关联数组:
$code_names = array(
'tn' => 'Tunisia',
'us' => 'United States',
'fr' => 'France');
foreach($code_names as $code => $name) {
//...
}
我相信使用关联数组是最明智的方法,而不是使用array_combine(),因为一旦你有一个关联数组,你可以简单地使用array_keys()或array_values()来获得你以前完全相同的数组。
Jacob Relkin answered 2019-04-23T19:48:31Z
3 votes
为什么不只是整合成一个多维关联数组? 好像你正在犯这个错误:
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
变为:
$dropdown = array('tn' => 'Tunisia', 'us' => 'United States', 'fr' => 'France');
Jakub answered 2019-04-23T19:48:58Z
3 votes
全部经过全面测试
3种从数组创建动态下拉列表的方法。
这将从数组创建一个下拉菜单,并自动分配其各自的值。
方法#1(正常数组)
$names = array('tn'=>'Tunisia','us'=>'United States','fr'=>'France');
echo '';
foreach($names AS $let=>$word){
echo ''.$word.'';
}
echo '';
?>
方法#2(正常数组)
$countries = array('tn'=> "Tunisia", "us"=>'United States',"fr"=>'France');
foreach($countries as $select=>$country_name){
echo '' . $country_name . '';
}
?>
方法#3(关联数组)
$my_array = array(
'tn' => 'Tunisia',
'us' => 'United States',
'fr' => 'France'
);
echo '';
echo 'Select...';
foreach ($my_array as $k => $v) {
echo '' . $v . '';
}
echo '';
?>
Funk Forty Niner answered 2019-04-23T19:49:55Z
2 votes
您可以使用array_merge组合两个数组,然后迭代它们。
$array1 = array("foo" => "bar");
$array2 = array("hello" => "world");
$both_arrays = array_merge((array)$array1, (array)$array2);
print_r($both_arrays);
Haider Ali answered 2019-04-23T19:50:38Z
2 votes
走出去......
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
PHP 5.3+
array_walk(array_combine($codes,$names), function ($name,$code){
@$opts = '' . $name . '';
})
echo "$opts";
在PHP 5.3之前
array_walk(array_combine($codes,$names), function ($name,$code){
@$opts = '' . $name . '';
})
echo "$opts";
或结合
array_walk(array_combine($codes,$names), function ($name,$code){
@$opts = '' . $name . '';
})
echo "$opts";
在选择
array_walk(array_combine($codes,$names), function ($name,$code){
@$opts = '' . $name . '';
})
echo "$opts";
演示
oLinkWebDevelopment answered 2019-04-23T19:51:45Z
2 votes
$codes = array ('tn','us','fr');
$names = array ('Tunisia','United States','France');
echo '
foreach(array_keys($codes) as $i) {
echo '
';echo ($i + 1);
echo '
';echo $codes[$i];
echo '
';echo $names[$i];
echo '
';}
echo '
';?>
r5d answered 2019-04-23T19:52:04Z
2 votes
而不是foreach循环,尝试这个(仅当您的数组具有相同的长度时)。
$number = COUNT($_POST["codes "]);//count how many arrays available
if($number > 0)
{
for($i=0; $i
{
$codes =$_POST['codes'][$i];
$names =$_POST['names'][$i];
//ur code in here
}
}
fchan answered 2019-04-23T19:52:29Z
2 votes
这对我有用:
$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] . "
";
}
delAmux answered 2019-04-23T19:52:50Z
1 votes
我认为你可以这样做:
$ codes = array('tn','us','fr');
$ names = array('突尼斯','美国','法国');
foreach ($codes as $key => $code) {
echo '' . $names[$key] . '';
}
它也适用于关联数组。
pashri answered 2019-04-23T19:53:35Z
1 votes
我认为最简单的方法就是以这种方式使用for循环:
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
for($i = 0; $i < sizeof($codes); $i++){
echo '' . $names[$i] . '';
}
SeReGa answered 2019-04-23T19:54:01Z
1 votes
foreach仅适用于单个数组。 要逐步执行多个数组,最好在while循环中使用each()函数:
while(($code = each($codes)) && ($name = each($names))) {
echo '' . $name['value'] . '';
}
each()返回有关当前键和数组值的信息,并将内部指针递增1,如果已到达数组末尾,则返回false。 此代码不依赖于具有相同键或具有相同类型元素的两个数组。 当两个阵列中的一个完成时,循环终止。
PerceptorII answered 2019-04-23T19:54:33Z
0 votes
array_combine()对我来说非常有用,同时结合了$_POST来自多个表单输入的多个值,以尝试更新购物车中的产品数量。
Calin Rusu answered 2019-04-23T19:54:59Z
0 votes
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]
....
}
Gvice answered 2019-04-23T19:55:25Z
0 votes
我通过这种方式解决了像你这样的问题:
foreach(array_keys($idarr) as $i) {
echo "Student ID: ".$idarr[$i]."
";
echo "Present: ".$presentarr[$i]."
";
echo "Reason: ".$reasonarr[$i]."
";
echo "Mark: ".$markarr[$i]."
";
}
Ulugov answered 2019-04-23T19:55:51Z
0 votes
您应该在singlr foreach循环中尝试使用put 2数组假设我有2个阵列1.$ item_nm2.$ item_qty
`<?php $i=1; ?>
Sr.No | item_nm | item_qty |
@foreach (array_combine($item_nm, $item_qty) as $item_nm => $item_qty)
$i++ $item_nm $item_qty@endforeach `
JADAV AKASH answered 2019-04-23T19:56:18Z
0 votes
很少有数组也可以这样迭代:
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,
);
}
Тарас Костюк answered 2019-04-23T19:56:44Z
0 votes
像这样的代码不正确,因为foreach仅适用于单个数组:
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
foreach( $codes as $code and $names as $name ) {
echo '' . $name . '';
}
?>
替代方案,改为:
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
$count = 0;
foreach($codes as $code) {
echo '' . $names[count] . '';
$count++;
}
?>
Nao Desu answered 2019-04-23T19:57:16Z
-1 votes
这个对我有用
$counter = 0;
foreach($codes as $code)
{
$codes_array[$counter]=$code;
$counter++;
}
$counter = 0;
foreach($names as $name)
{
echo $codes_array[$counter]."and".$name;
$counter++;
}
mcjarod answered 2019-04-23T19:57:37Z
-2 votes
如果可以按照您的喜好进行操作,那么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
}}
我的解决方案并不完美,但对大多数用途来说都没问题。
Jannis answered 2019-04-23T19:58:09Z