[英]Print a key in a PHP multidimensional array
I have a multidimensional array and I want to print the contents as follows:我有一个多维数组,我想按如下方式打印内容:
Sam
class1: 76
class2: 62
class3: 56
class4: 60
Matt
class1: 76
class2: 62
class3: 56
class4: 60
Dave
class1: 76
class2: 62
class3: 56
class4: 60
Steve
class1: 76
class2: 62
class3: 56
class4: 60
My problem is that I don't know how to refer to the key of the first sub-array (the names).我的问题是我不知道如何引用第一个子数组的键(名称)。
key($index)
just replaces all of the names in the output with "class1". key($index)
只是将输出中的所有名称替换为“class1”。 Here's my code so far:到目前为止,这是我的代码:
$scoreList = array(
"Sam" => array(
"class1" => 76,
"class2" => 62,
"class3" => 56,
"class4" => 60,
),
"Matt" => array(
"class1" => 76,
"class2" => 62,
"class3" => 56,
"class4" => 60,
),
"Dave" => array(
"class1" => 76,
"class2" => 62,
"class3" => 56,
"class4" => 60,
),
"Steve" => array(
"class1" => 76,
"class2" => 62,
"class3" => 56,
"class4" => 60,
));
printGrade($scoreList["Sam"]);
printGrade($scoreList["Matt"]);
printGrade($scoreList["Dave"]);
printGrade($scoreList["Steve"]);
function printGrade($index) {
Print key($index)."<br>";
for($i = 1; $i <= 4; $i++)
{
Print "class".$i.": ".$index["class".$i]."<br>";
};
echo "<br>";
}
I'm pretty new to web development, so if anyone has any hints I'd really appreciate it!我对 Web 开发还很陌生,所以如果有人有任何提示,我将不胜感激!
Edit: Am I getting closer...?编辑:我是不是越来越近了......?
function printGrade($index) {
foreach ($index as &$value) {
print array_keys($index).": ".$value."<br>";
}
echo "<br>";
}
This can be done with a recursive function call:这可以通过递归函数调用来完成:
function printGrade($scoreList) {
foreach($scoreList as $key=>$score) {
echo $key;
if(is_array($score)) {
echo "<br/>";
printGrade($score);
} else {
echo ": $score<br/>";
}
}
}
Try with this :试试这个:
foreach($scoreList as $key => $val)
{
echo $key."</br>";
foreach( $val as $keyItem => $valKey)
{
echo $keyItem ." : ".$valKey."</br>";
}
}
Out put:输出:
Sam
class1 : 76
class2 : 62
class3 : 56
class4 : 60
Matt
class1 : 76
class2 : 62
class3 : 56
class4 : 60
Dave
class1 : 76
class2 : 62
class3 : 56
class4 : 60
Steve
class1 : 76
class2 : 62
class3 : 56
class4 : 60
<<!DOCTYPE html>
<html>
<body>
<?php
$scoreList = array(
"Sam" => array(
"class 1" => 76,
"class 2" => 62,
"class 3" => 56,
"class 4" => 60,
),
"Matt" => array(
"class 1" => 76,
"class 2" => 62,
"class 3" => 56,
"class 4" => 60,
),
"Dave" => array(
"class 1" => 76,
"class 2" => 62,
"class 3" => 56,
"class 4" => 60,
),
"Steve" => array(
"class 1" => 76,
"class 2" => 62,
"class 3" => 56,
"class 4" => 60,
));
echo "Sam: ". "<br>"."<br>";
echo "class 1:  ". $scoreList ['Sam'] ['class 1']. "<br>";
echo "class 2:  ". $scoreList ['Sam'] ['class 2']. "<br>";
echo "class 3:  ". $scoreList ['Sam'] ['class 3']. "<br>";
echo "class 4:  ". $scoreList ['Sam'] ['class 4']. "<br>"."<br>";
echo "Matt: ". "<br>"."<br>";
echo "class 1:  ". $scoreList ['Matt'] ['class 1']. "<br>";
echo "class 2:  ". $scoreList ['Matt'] ['class 2']. "<br>";
echo "class 3:  ". $scoreList ['Matt'] ['class 3']. "<br>";
echo "class 4:  ". $scoreList ['Matt'] ['class 4']. "<br>"."<br>";
echo "Dav: ". "<br>"."<br>";
echo "class 1:  ". $scoreList ['Dave'] ['class 1']. "<br>";
echo "class 2:  ". $scoreList ['Dave'] ['class 2']. "<br>";
echo "class 3:  ". $scoreList ['Dave'] ['class 3']. "<br>";
echo "class 4:  ". $scoreList ['Dave'] ['class 4']. "<br>"."<br>";
echo "Steve: ". "<br>"."<br>";
echo "class 1:  ". $scoreList ['Steve'] ['class 1']. "<br>";
echo "class 2:  ". $scoreList ['Steve'] ['class 2']. "<br>";
echo "class 3:  ". $scoreList ['Steve'] ['class 3']. "<br>";
echo "class 4:  ". $scoreList ['Steve'] ['class 4']. "<br>"."<br>";
?>
</body>
</html>
Using only one foreach with echo out all inner arrays ( $val
) as key: value
pairs, using implode(glue, pieces)
which glue is </br>
new line.仅使用一个 foreach并回显所有内部数组(
$val
)作为key: value
对,使用implode(glue, pieces)
,其中胶水是</br>
新行。 To print key: value
, I used array_map
with callback fn
return format $k: $v
, which $k
and $v
are from array_keys
and array_values
respectively.要打印
key: value
,我使用array_map
和回调fn
返回格式$k: $v
,其中$k
和$v
分别来自array_keys
和array_values
。
foreach($scoreList as $key => $val)
{
echo $key."</br>";
echo implode("</br>", array_map(
fn($k,$v)=>"$k: $v",
array_keys($val),
array_values($val)
)
);
echo "</br></br>";
}
Output as you Expect按预期输出
Sam
class1: 76
class2: 62
class3: 56
class4: 60
Matt
class1: 76
class2: 62
class3: 56
class4: 60
Dave
class1: 76
class2: 62
class3: 56
class4: 60
Steve
class1: 76
class2: 62
class3: 56
class4: 60
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.