我正在尝试解决以下问题:
注意我是编程和PHP的新手,并且正在使用SAMS PHP, MySQL and Apache (Julie C. Meloni).
有一个练习必须创建一个多维数组。外部数组是一个列出电影类型的关联数组。类型阵列列出该类型的电影。然后,系统会要求您打印出与该类型相关的电影列表的类型列表。
我的代码:
<?php
$genres = array(
'Science Fiction' => array('Star Trek', 'Star Wars', 'Alien'),
'Drama' => array('Les Amant de Pont Neuf', 'War & Peace', 'Bridehead Revisited'),
'Crime' => array('Heat', 'Pulp Fiction', 'Messerine')
);
$gKeys = array_keys($genres);
foreach ($gKeys as $genre) {
print $genre."<br/>";
}
?>
这可以打印出来:
科幻小说
剧情
犯罪
这是我跑到墙上的地方。当我尝试在
之后添加另一个foreach循环时print $genre;
浏览器中没有显示任何结果(第一个循环的结果除外)。我尝试了一切。例如:
也许我错误地构造了多维数组?为了保持一致性,第二维数组是否也需要是关联数组?
答案 0 :(得分:1)
您的阵列结构正确。您正在使用错误的数组(只是键的数组)并在print $genre;
之后添加另一个foreach循环,因此它无效。
不,第二维数组也不需要是关联数组。
<?php
$genres = array(
'Science Fiction' => array('Star Trek', 'Star Wars', 'Alien'),
'Drama' => array('Les Amant de Pont Neuf', 'War & Peace', 'Bridehead Revisited'),
'Crime' => array('Heat', 'Pulp Fiction', 'Messerine')
);
foreach ($genres as $genre => $movies)
{
print $genre . " - <br/>";
foreach ($movies as $movie)
{
print $movie . "<br/>";
}
print "</br>";
}
?>
答案 1 :(得分:0)
等待!你为什么这样做:
$gKeys = array_keys($genres);
这只会给你一个单独的数组。
首先在$ genres上循环,然后在里面:
foreach ($genre as $key=>$subgenre)
{
//do stuff here
}
答案 2 :(得分:0)
foreach ($genres as $genrekey => $genrevalue) {
print $genrekey."<br/>";
foreach ($genrevalue as $value) {
print $value."<br/>";
}
}
答案 3 :(得分:0)
您的外部数组是一个关联数组,其中 genres 为键。
要打印出该类型的电影(子阵列),请使用另一个foreach,如下所示:
print "<ul>";
foreach ($genres as $genre => $movies) {
print "<li>".$genre."<ul>";
foreach ($movies as $movie) {
print "<li>".$movie."</li>";
}
print "</ul></li>";
}
print "</ul>";
答案 4 :(得分:0)
function multiarray_keys($ar) {
foreach($ar as $k => $v) {
$keys[] = $k;
if (is_array($ar[$k]))
$keys = array_merge($keys, multiarray_keys($ar[$k]));
}
return $keys;
}
$gKeys = multiarray_keys($genres);
echo "<pre>";
print_r(multiarray_keys($array));
echo "</pre>";
答案 5 :(得分:0)
如果您需要这个来查看数组中的数据以进行调试,您可以使用PHP var_export()
,var_dump()
,print_r()
来确保数据在您填充时想要它。否则,如果你想在生产中展示它,你可以这样做:
foreach($multiDimentinalArray as $key => $value):
if(is_array($value)):
foreach($value as $k => $val):
print " $key.$k => $val";
else:
print "$key => $value";
endif;
endforeach;