Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Mike Womack
13,672 PuntosTengo problemas con la tarea 3 del Desafío de Colecciones en OOP PhP
Recibo un error que dice que necesito considerar tanto "roof_color" como "wall_color" y verificarlos contra el parámetro $color.
--- Php
}
Las dos tareas anteriores son aceptables, pero no puedo averiguar qué está mal en mi sentencia condicional.
<?php
// añade código debajo de este comentario
class Subdivision
{
público $houses = de caracteres. Lo último es el tipo de cosa que devuelve el método "toCharArray()".();
público función filterHouseColor($color)
{
$output = de caracteres. Lo último es el tipo de cosa que devuelve el método "toCharArray()".();
foreach($this->houses como $dwelling) {
if ($dwelling->roof_color == $color || $dwelling->wall_color == $color) {
$output = $dwelling;
}
return $output;
}
}
}
?>
2 Respuestas
Jennifer Nordell
Profesor de TreehouseHola, Mike Womack ¡Estás haciendo fantástico¡Has entendido el problema sumamente bien. Todo se reduce a la ubicación. Es decir, la ubicación de tu sentencia de return . Estás devolviendo el valor demasiado pronto. return suceda dentro el foreach bucle. Una vez que se return ejecuta, el bucle detiene la ejecución.
En este momento, tu código se ve así:
foreach($this->houses as $dwelling) { // comenzar foreach
if ($dwelling->roof_color == $color || $dwelling->wall_color == $color) { // comenzar if
$output[] = $dwelling;
} // fin if
return $output;
} // fin foreach
Pero quisiste para hacer esto:
foreach($this->houses as $dwelling) { // comenzar foreach
if ($dwelling->roof_color == $color || $dwelling->wall_color == $color) { // comenzar if
$output[] = $dwelling;
} // fin if
} // fin foreach
return $output; // devolver después de que el foreach haya terminado
¡Espero que esto te ayude!
Mike Womack
13,672 Puntos¡Fantástico! Muchas gracias Jennifer, estaba tan enfocado en la sentencia condicional como el problema que me perdí la sentencia de retorno.