首页 > 解决方案 > 如何访问 PHP 数组中的不同键和值

问题描述

我有这个 PHP 数组:

Array
(
    [Album Title 1] => Array
        (
            [Track Title 1] => 27
            [Track Title 2] => 18
            [Track Title 3] => 7
        )

    [Album Title 2] => Array
        (
            [Track Title 1] => 41
            [Track Title 2] => 17
            [Track Title 3] => 12
        )

)

如何在不使用点符号的情况下回显“专辑标题 1”、“曲目标题 1”及其对应的 int(27)?(我不知道“专辑标题1”的确切标题)

要获得“专辑标题 1”,我尝试过:

echo $albums[0];

print_r(array_values($albums));

foreach ($albums as $a){
    print_r($a) . "\n";
}

ETC...

对于我需要的每个值,我都尝试了更多的变体。

标签: phparrays

解决方案


PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型。这种类型针对几种不同的用途进行了优化;它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。由于数组值可以是其他数组,因此树和多维数组也是可能的。

我认为这对您有帮助,请注意示例 n° 6 https://www.php.net/manual/en/language.types.array.php

您需要的是访问多维数组。在 PHP 中,您不需要您调用的“点符号”(album.titleelem1.sub_elem2)来访问元素。可以通过element的key来访问多维数组,方式如下:

$multiarray["element1"]["sub_element2"]["sub_sub_elementX"];

话虽如此,我将在这里留下一个例子,更好地解释我想说的话。

使用您的数据的示例:

<?php
$array = array( "Album Title 1" => array( "Track Title 1" => 27,
                                          "Track Title 2" => 18,
                                          "Track Title 3" => 7 ),
                "Album Title 2" => array( "Track Title 1" => 41,
                                          "Track Title 2"  => 17,
                                          "Track Title 3"  => 12 )
              );

echo($array["Album Title 1"]["Track Title 2"]);
//Output will be 18

echo("<br/><br/>");

foreach($array as $Album => $Track){
    foreach($Track as $Title => $number){
        echo("Album : ".$Album."<br/>");
        echo("Track : ".$Title."<br/>");
        echo("Number : ".$number."<br/>");
    }
}
/*  Output will be:

Album : Album Title 1
Track : Track Title 1
Number : 27
Album : Album Title 1
Track : Track Title 2
Number : 18
Album : Album Title 1
Track : Track Title 3
Number : 7
Album : Album Title 2
Track : Track Title 1
Number : 41
Album : Album Title 2
Track : Track Title 2
Number : 17
Album : Album Title 2
Track : Track Title 3
Number : 12

*/
?>

您可以在http://phptester.net/上尝试代码


推荐阅读