一个简单的例子,其中states是一个状态数组,每个状态都是一个城市数组。尝试访问$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
}
答案 0 :(得分:2)
这是因为你正在定义键。请尝试foreach循环:
foreach($states as $key => $value) {
echo $key . '-' . $value;
}
$key
将成为州,$value
将成为城市。
答案 1 :(得分: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 :(得分:0)
你应该使用foreach。试试这个:
foreach($states as $state_name => $cities) {
echo '<h2>'.$state_name .'</h2>';
foreach($cities as $city) {
echo "<h3>".$city."</h3>"
}
}
答案 3 :(得分:0)
您的数组中没有数字索引,因为它是关联数组。所以你可以,例如致电$states['Arizona']
,但您无法拨打$states[1]
。
预先使用foreach
循环:
foreach ($states as $name => $cities) {
echo $name;
foreach ($cites as $city) {
echo $city;
}
}
答案 4 :(得分: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>";
}