微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在PHP中获取键名?

如何解决如何在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 manual

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 举报,一经查实,本站将立刻删除。