med*_*edk 92 php arrays 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>';
}
?>
Run Code Online (Sandbox Code Playgroud)
这种方法对我不起作用.有什么建议?
ale*_*lex 144
foreach( $codes as $code and $names as $name ) { }
Run Code Online (Sandbox Code Playgroud)
那是无效的.
你可能想要这样的东西......
foreach( $codes as $index => $code ) {
echo '<option value="' . $code . '">' . $names[$index] . '</option>';
}
Run Code Online (Sandbox Code Playgroud)
或者,将代码作为$names
数组的关键要容易得多......
$names = array(
'tn' => 'Tunisia',
'us' => 'United States',
...
);
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 82
foreach
一次只能运行一个阵列.
你的数组的结构方式,你可以将array_combine()
它们变成一个键值对数组,然后foreach
是单个数组:
foreach (array_combine($codes, $names) as $code => $name) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
Run Code Online (Sandbox Code Playgroud)
或者如其他答案所示,您可以改为对关联数组进行硬编码.
Ign*_*ams 25
用于array_combine()
将阵列融合在一起并迭代结果.
$countries = array_combine($codes, $names);
Run Code Online (Sandbox Code Playgroud)
使用关联数组:
$code_names = array(
'tn' => 'Tunisia',
'us' => 'United States',
'fr' => 'France');
foreach($code_names as $code => $name) {
//...
}
Run Code Online (Sandbox Code Playgroud)
我相信使用关联数组是最明智的方法,而不是使用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);
Run Code Online (Sandbox Code Playgroud)
其他好处是:
如果一个数组比另一个短,则回调接收null
值以填补空白。
您可以使用 2 个以上的数组进行迭代。
小智 5
这对我有用:
$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>";
}
Run Code Online (Sandbox Code Playgroud)