我见过许多类似的问题,但没有一个可以帮助解释我的问题。 我有一个名为cities的数组,其中包含具有该状态城市的状态的嵌套数组。它看起来像这样:
$cities = array(
"ca" => array(
"los-angeles" => "Los Angeles"
),
"wa" => array(
"bellingham" => "Bellingham",
"seattle" => "Seattle",
"tacoma" => "Tacoma"
)
);
我的PHP代码显示许多HTML select
字段:
<?php
foreach ($cities as $state) {
echo "<select name='city' id='" . $state . "'>";
foreach ($state as $city => $name) {
echo "<option value='" . $city . "'>" . $name . "</option>";
}
}
?>
id
的{{1}}始终为select
。我如何使用密钥,如“ca”或“wa”?
答案 0 :(得分:1)
问题是你应该使用数组键来选择状态。这是我对您的代码的修订。请注意,我明确指定了state_key
和state_value
以及city_key
和city_value
。明确地命名事物有助于调试。我还添加了一个结束</select>
元素,以便内容正确呈现。
foreach ($cities as $state_key => $state_value) {
echo "<select name='city' id='" . $state_key . "'>";
foreach ($state_value as $city_key => $city_value) {
echo "<option value='" . $city_key . "'>" . $city_value . "</option>";
}
echo "</select>";
}
答案 1 :(得分:0)
尝试使用echo "<select name='city' id='" . $state['los-angeles'] . "'>";
代替echo "<select name='city' id='" . $state . "'>";
如果您希望ca
作为您的选择元素ID,请使用下面的
foreach ($cities as $key=>$state) {
echo "<select name='city' id='" . $key . "'>";
foreach ($state as $city => $name) {
echo "<option value='" . $city . "'>" . $name . "</option>";
}
}
如果您想要los-angeles
作为您选择元素的ID,请使用下面的
foreach ($cities as $key=>$state) {
$SelectId = strtolower(str_replace(" ",'-',$state['los-angeles']));
echo "<select name='city' id='" . $SelectId . "'>";
foreach ($state as $city => $name) {
echo "<option value='" . $city . "'>" . $name . "</option>";
}
}
答案 2 :(得分:0)
那是因为第一个foreach循环遍历数组数组。所以每个成员都将成为一个阵列。如果您有id ='" . $state[0]
,您将看到所述数组的第一个成员。
var_dump
功能是你的朋友。
您可以使用array_keys
功能获取所有城市。
答案 3 :(得分:0)
foreach ($cities as $key=>$state) {
echo "<select name='city' id='" . $key . "'>";
foreach ($state as $city => $name) {
echo "<option value='" . $city . "'>" . $name . "</option>";
}
}
更改为
在你的情况下,$ state是一个包含城市的数组。所以它始终显示值为Array()。