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". 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!
Edit: Am I getting closer...?
function printGrade($index) {
foreach ($index as &$value) {
print array_keys($index).": ".$value."<br>";
}
echo "<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
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/>";
}
}
}