如何解决如何在PHP中获取键名?
所以我定义了一个这样的三维数组:
$movies = array(
"Action" => array(
array(
"Title" => "Nobody","Year Released" => "2021"
),array(
"Title" => "Monster Hunter","Year Released" => "2020"
),array(
"Title" => "Tenet",array(
"Title" => "The Hitman's Bodyguard","Year Released" => "2017"
),array(
"Title" => "Wrath of Man","Year Released" => "2021"
)
),"Comedy" => array(
array(
"Title" => "The Hangover","Year Released" => "2009"
),array(
"Title" => "Minions","Year Released" => "2015"
),array(
"Title" => "Deadpool","Year Released" => "2016"
),array(
"Title" => "Scary Movie","Year Released" => "2000"
),array(
"Title" => "Blockers","Year Released" => "2018"
)
)
);
我试图展示电影的类型、片名和发行年份。但是,每当我尝试获取流派时,我都会得到 Array。这是我使用的代码:
foreach ($movies as $genres) {
echo "$genres <br>";
while (list ($index,$array) = each ($genres)) {
echo "Movie number: $index <br>";
while (list ($k,$v) = each ($array)) {
echo "$k - $v <br>";
}
echo "<br>";
}
echo "<br>";
}
部分结果(在实际页面上,每行分为四行。只是这个网站弄乱了结果。):
数组 影片编号:0 标题 - 没有人 发行年份 - 2021
影片编号:1 标题 - 怪物猎人 发行年份 - 2020
影片编号:2 标题 - 宗旨 发行年份 - 2020
影片编号:3 标题 - 杀手的保镖 发行年份 - 2017
影片编号:4 标题 - 人类的愤怒 发行年份 - 2021
解决方法
您可以在 for each 循环中使用关键语法
foreach ($movies as $genreName => $genres) {
echo "$genreName <br>";
while (list ($index,$array) = each ($genres)) {
echo "Movie number: $index <br>";
while (list ($k,$v) = each ($array)) {
echo "$k - $v <br>";
}
echo "<br>";
}
echo "<br>";
}
,
foreach
有两种语法
foreach (iterable_expression as $value)
statement
foreach (iterable_expression as $key => $value)
statement
来自 php.net,
第一种形式遍历由 iterable_expression 给出的可迭代对象。在每次迭代中,当前元素的值被分配给 $value。
第二种形式将在每次迭代时额外将当前元素的键分配给 $key 变量。
我会像这样重写你的代码
printEach($movies);
function printEach($array) {
echo "<br><br>";
foreach ($array as $key => $value) {
echo $key;
if (is_array($value)) {
printEach($value); // Recursive
} else {
echo " - ".$value."<br><br>";
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。