簡體   English   中英

在PHP中訪問多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM