Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP PHP Arrays and Control Structures PHP Arrays Multidimensional Arrays

Amrit Pandey
Amrit Pandey
17,595 Points

Stuck in PHP challenge associative arrays

Not able to pass the challenge.

index.php
<?php
//edit this array

$contacts = array(
      array(
     "name"=>"Alena Holligan",
     "email"=> 'alena.holligan@teamtreehouse.com'
  ),

   array(
     "name" => "Dave McFarland",
     "email" => "dave.mcfarland@teamtreehouse.com"
    ),

    array(
     "name"=> "Treasure Porth", 
     "email"=>'treasure.porth@teamtreehouse.com'
   ),

    array(
    "name" => "Andrew Chalkley",
    "email" => "andrew.chalkley@teamtreehouse.com"
  ) 
    );

echo "<ul>\n";
//$contacts[0] will return 'Alena Holligan' in our simple array of names.
echo "<li>$contacts[0]['name'] \: $contacts[0]['email']</li>\n";
echo "<li>$contacts[1]['name'] \: $contacts[1]['email']</li>\n";
echo "<li>$contacts[2]['name'] \: $contacts[2]['email']</li>\n";
echo "<li>$contacts[3]['name'] \: $contacts[3]['email']</li>\n";
echo "</ul>\n";

2 Answers

The only changes I made to your code to get it to pass were removing the backslash before the colon (you do not need to escape a colon) and putting the variables in your echo tag inside of curly brackets. I do not believe you explicitly need this but it seems to throw an error without it.

<?php

/* Challenge Array Here */

echo "<ul>\n";
//$contacts[0] will return 'Alena Holligan' in our simple array of names.
echo "<li>{$contacts[0]['name']} : {$contacts[0]['email']}</li>\n";
echo "<li>{$contacts[1]['name']} : {$contacts[1]['email']}</li>\n";
echo "<li>{$contacts[2]['name']} : {$contacts[2]['email']}</li>\n";
echo "<li>{$contacts[3]['name']} : {$contacts[3]['email']}</li>\n";
echo "</ul>\n";
?>
Jonathan Grieve
MOD
Jonathan Grieve
Treehouse Moderator 91,253 Points

Hi Amrit,

I believe you need to add a second index as a multidimensional array to you answer. So

echo "<li>$contacts[0][0]['name'] \: $contacts[0][1]['email']</li>\n";
echo "</ul>\n";

Would return both the first group of array indexes and the first and second values inside that group, meaning the actual email and contact name. Try filling in the values like this! :-)

Like this would give you an undefined offset because the inner array(s) are associative.

$contacts[0] gives you the array that contains Alena's name and e-mail. If you remove the associations so it's just ['Alena Holligan', 'alena.holligan@teamtreehouse.com'] you would get Alena's name with $contacts[0][0] and her e-mail would be $contacts[0][1].