2013-11-24 3 views
1

많은 비슷한 문제가 있지만 내 문제를 설명하는 데 도움이되는 것은 없습니다. 나는 cities라는 배열을 가지고 있는데, 그 배열은 그 상태의 도시를 가진 상태를위한 중첩 배열이다. 그것은 다음과 같습니다중첩 배열을 foreach를 사용하여 에코 PHP

$cities = array(
    "ca" => array(
     "los-angeles" => "Los Angeles" 
    ), 
    "wa" => array(
     "bellingham" => "Bellingham", 
     "seattle" => "Seattle", 
     "tacoma" => "Tacoma" 
    ) 
); 

내 PHP 코드는 많은 HTML select 필드를 표시하려면 select

<?php 
foreach ($cities as $state) { 
    echo "<select name='city' id='" . $state . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
} 
?> 

id 항상 Array입니다. "ca"또는 "wa"와 같은 키를 사용하려면 어떻게해야합니까? 그런 다음 하나의 아래 사용하여 선택 요소 ID로 ca을 원하는 경우에 당신은 당신의 선택 요소의 ID와 los-angeles처럼하려면

답변

1

문제는 선택한 상태의 배열 키를 사용해야한다는 것입니다. 여기 내 코드가 수정되었습니다. 내가 명시 적으로 state_keystate_value뿐만 아니라 city_keycity_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

고맙습니다! 명시 적 이름에 대한 팁 나는 더 자주 사용하게 될 것입니다! 나는 이제 어떻게'국가 열쇠'와 그것이 발견되었는지 이해한다. 아, 나는'select' 태그를 닫았지만이 질문에 그것을 추가하는 것을 잊었습니다. –

0

아래를 누른 다음, 대신 echo "<select name='city' id='" . $state . "'>";

echo "<select name='city' id='" . $state['los-angeles'] . "'>";을 uisng

foreach ($cities as $key=>$state) { 
    echo "<select name='city' id='" . $key . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
} 

시도 one

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>"; 
    } 
    } 
0

첫 번째 foreach 루프가 배열 배열을 통과하기 때문입니다. 따라서 각 구성원은 배열이 될 것입니다. id ='" . $state[0]이 있으면 해당 배열의 첫 번째 구성원이 표시됩니다.

var_dump 기능은 친구입니다.

array_keys 기능을 사용하여 모든 도시를 얻을 수 있습니다. 귀하의 경우 $ 상태에서이

0
foreach ($cities as $key=>$state) { 
    echo "<select name='city' id='" . $key . "'>"; 
    foreach ($state as $city => $name) { 
     echo "<option value='" . $city . "'>" . $name . "</option>"; 
    } 
} 

변화는 도시를 포함하는 배열입니다. 그래서 항상 Array()로 값을 표시합니다.

관련 문제