Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问PHP数组中的不同键和值_Php_Arrays - Fatal编程技术网

如何访问PHP数组中的不同键和值

如何访问PHP数组中的不同键和值,php,arrays,Php,Arrays,我有一个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

我有一个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";
}
等等


我尝试了更多的变化,我需要的每一个值

这不是很好的代码,但应该可以:

$array = [
    'Album Title 1' => [
        'Track Title 1' => 27,
        'Track Title 2' => 18,
        'Track Title 3' => 7
    ]
];

$level1KeyName = array_keys($array)[0]; // Album Title 1
$level2KeyName = array_keys($array[$level1KeyName])[0]; // Track Title 1
$level2KeyValue = $array[$level1KeyName][$level2KeyName]; // 27

echo $level1KeyName . PHP_EOL;
echo $level2KeyName . PHP_EOL;
echo $level2KeyValue . PHP_EOL;
它打印:

专辑标题1

曲目标题1

二十七


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

我认为这会对您有所帮助,请注意示例6

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

$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

*/
?>


您可以在

的“foreach(array_expression as$key=>$value)语句”@kerbholz facepalm中使用一个键来尝试代码。。。非常感谢。试试array_column()。你说的“点符号”是什么意思?@NicoHaase类似的东西