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 trialMUZ140610 Tinashe Marunda
7,028 PointsNext, change the $flavors variable in index.php to contain the three most popular flavors. Right now, the controller cod
Help guys coz i am literally stuck dont know what to do please can someone help me
<?php
// INCLUDE MODEL FILE
require_once("flavors.php");
// CONTROLLER CODE
$flavors = get_flavors_by_likes($number);
// VIEW CODE
?><html>
<body>
<h1>Ye Olde Ice Cream Shoppe</h1>
<p>We sell amazing flavors of ice cream.</p>
<h2>Most Popular Flavors</h2>
<ul>
<?php
foreach ($flavors as $flavor) {
echo "<li>" . $flavor["name"] . "</li>";
}
?>
</ul>
</body>
</html>
<?php
// This function returns all the flavors
// ordered by the date they have been added.
function get_all_flavors() {
$flavors = array(
array("name" => "Vanilla", "likes" => 312),
array("name" => "Cookie Dough", "likes" => 976),
array("name" => "Peppermint", "likes" => 12),
array("name" => "Cake Batter", "likes" => 598),
array("name" => "Avocado Chocolate", "likes" => 6),
array("name" => "Jalapeno So Spicy", "likes" => 3),
);
return $flavors;
}
// This function receives a number as an argument.
// It returns the newest flavors, the most recent
// flavor first. (The number of flavors returned
// corresponds to the number in the argument.)
function get_recent_flavors($number) {
$recent = array();
$all = get_all_flavors();
$total_flavors = count($all);
$position = 0;
foreach($all as $flavor) {
$position = $position + 1;
if ($total_flavors - $position < $number) {
$recent[] = $flavor;
}
}
return array_reverse($recent);
}
// This function receives a number as an argument.
// It returns the most popular flavors based on
// the number of likes, the most popular flavor
// first. (The number of flavors returned corresponds
// to the number in the argument.)
function get_flavors_by_likes($number) {
$all = get_all_flavors();
$total_flavors = count($all);
$position = 0;
$popular = $all;
usort($popular, function($a, $b) {
return $b['likes'] - $a['likes'];
});
return array_slice($popular, 0, $number);
}
?>
3 Answers
Iain Diamond
29,379 PointsIf you get stuck, try playing around with the code to see what happens. For example the function
$flavors = get_flavors_by_likes($number);
takes a number, but where is it defined? What does the function comments say? What do you think the code does? What happens if you pass a number into the function? The question mentions '3'. Why not try calling it with that?
Please let me know how you get on. iain
Juliette Tworsey
Front End Web Development Techdegree Graduate 32,425 PointsI was stuck on this too. If you assign (in the controller code) the number 3 to the $number variable it will work:
$number = 3; $flavors = get_flavors_by_likes($number);
Chhavy Mahoney
2,649 PointsThank you for the answer, Juliette.