我见过很多类似的问题,但没有一个能帮助解释我的问题。我有一个名为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>";
}
}
?>
select
的id
总是Array
。我怎样才能使用钥匙,比如"ca"或"wa"?
问题是您应该使用数组键来选择状态。这是我对你的代码的修改。注意,我已经明确命名了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>";
}
这是因为第一个foreach循环要遍历数组。所以每个成员都将是一个数组。如果你有id ='" . $state[0]
,你会看到该数组的第一个成员。
CCD_ 11函数是您的朋友。
使用array_keys
函数可以得到所有的城市。
foreach ($cities as $key=>$state) {
echo "<select name='city' id='" . $key . "'>";
foreach ($state as $city => $name) {
echo "<option value='" . $city . "'>" . $name . "</option>";
}
}
更改为该
在您的案例中,$state是一个包含城市的数组。所以它总是将值显示为Array()。
尝试使用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>";
}
}