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

array to string conversion

$contacts[0]['name'] throws array to string conversion error. what am I missing?

2 Answers

andren
andren
28,558 Points

When you insert a multidimensional array in double quoted strings you have to wrap the array in curly braces {}.

So instead of this "$contacts[0]['name']" you would have this "{$contacts[0]['name']}"

The reason is that when you use string interpolation PHP has to guess where your variable ends and regular text begins. While it usually has no issue doing so, multidimensional arrays is one case where it is unable to. The curly braces allows you to tell PHP exactly where the variable starts and ends.

So to summarize, just place {} around your array variables and that error should go away.

simhub
simhub
26,544 Points

hi andrew,
if your code looks kind of this it should work fine:

$contacts = [['name'=>'Alena Holligan','email'=>'alena.holligan@teamtreehouse.com'],
             ['name'=>'Dave McFarland','email'=>'dave.mcfarland@teamtreehouse.com'], 
             ['name'=>'Treasure Porth','email'=>'treasure.porth@teamtreehouse.com'], 
             ['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";