[英]Accessing multidimensional arrays in php
一個簡單的示例,其中州是州的數組,每個州是城市的數組。 嘗試訪問$states[0]
到$states[n]
有效,但是在for循環中回顯空值。
$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
}
這是因為您正在定義鍵。 嘗試使用foreach循環:
foreach($states as $key => $value) {
echo $key . '-' . $value;
}
$key
將成為州, $value
將成為城市。
$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>';
}
您應該使用foreach。 試試這個:
foreach($states as $state_name => $cities) {
echo '<h2>'.$state_name .'</h2>';
foreach($cities as $city) {
echo "<h3>".$city."</h3>"
}
}
您的數組中沒有數字索引,因為它是關聯數組。 因此,您可以例如調用$states['Arizona']
,但不能調用$states[1]
。
要遍歷使用foreach
循環:
foreach ($states as $name => $cities) {
echo $name;
foreach ($cites as $city) {
echo $city;
}
}
眾所周知,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>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.