2014-09-25 6 views
0

states는 states의 배열이고 각 state는 도시의 배열입니다. $states[0]에서 $states[n]에 액세스하려고 시도하지만 for 루프에서 빈 값을 반향 출력합니다.PHP의 다차원 배열에 접근하기

$states = array(
'California' => array('LA', 'San Diego', 'San Francisco'), 
'Arizona' => array('Phoenix'), 
'Florida' => array('Miami', 'Jacksoncille', 'Tampa', 'Orlando'), 
'Ohio' => array('Cincinnati', 'Columbus') 
); 

$arrlength = count($states); 

for($x=0;$x<$arrlength;$x++) { 

echo '<h2>'.$states[$x].'</h2>'; //returns 4 empty h2 

} 
+0

대신 [foreach] (http://php.net/manual/it/control-structures.foreach.php)를 사용하십시오. – DonCallisto

답변

2
$states = array(
'California' => array('LA', 'San Diego', 'San Francisco'), 
'Arizona' => array('Phoenix'), 
'Florida' => array('Miami', 'Jacksoncille', 'Tampa', 'Orlando'), 
'Ohio' => array('Cincinnati', 'Columbus') 
); 

foreach($states as $key=>$val) 
{ 
echo $key; 
foreach($val as $value) 
    echo '<h2>'.$value.'</h2>'; 
} 
2

키를 정의하기 때문입니다. 대신 foreach 루프를 시도 :

foreach($states as $key => $value) { 
    echo $key . '-' . $value; 
} 

$key은 국가되며 $value 도시가 될 것입니다 경우.

0

foreach를 사용해야합니다. 이에보십시오 : 당신은 당신의 배열에 숫자 인덱스가없는

foreach($states as $state_name => $cities) { 
     echo '<h2>'.$state_name .'</h2>'; 
     foreach($cities as $city) { 
      echo "<h3>".$city."</h3>" 
     } 
    } 
0

, 그것은 연관 배열이기 때문에. 예. $states['Arizona']으로 전화를 걸지 만 $states[1]으로 전화 할 수는 없습니다.

사용 foreach 루프를 통해 FOREACH하려면 모든 사람으로

foreach ($states as $name => $cities) { 
    echo $name; 
    foreach ($cites as $city) { 
     echo $city; 
    } 
} 
0

foreach는는 경계가 정의되지 않습니다 및 키 숫자가 아닌 있기 때문에 배열을 통해 이동하는 가장 좋은 방법입니다 말한다. 어쨌든 for 루프로하고 싶다면 도움이 될 것입니다. 그러나 그것은 매우 어리 석고 나중에 문제를 일으킬 수 있습니다.

$states = array(
    'California' => array('LA', 'San Diego', 'San Francisco'), 
    'Arizona' => "cc", 
    'Florida' => array('Miami', 'Jacksoncille', 'Tampa', 'Orlando'), 
    'Ohio' => array('Cincinnati', 'Columbus') 
); 


$state_array = array_keys($states); 
$city_array = array_values ($states); 


for($x=0;$x<count($state_array);$x++) { 
    echo "<b>";echo $state_array[$x];echo "</b>";echo "<hr>"; 
    if(is_array($city_array[$x])){ 
     for($y=0;$y<count($city_array[$x]);$y++){ 
      echo $city_array[$x][$y];echo "</br>";  
     } 
    }else{ 
     echo $city_array[$x];echo "</br>";  
    } 
    echo "</br>"; 
}