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

PHP Conceptos Básicos de PHP Orientado a Objetos Construyendo una Colección Método de Lista de Compras

Egg & Eggs se están mostrando ambos

Creo que mi código es igual al del instructor. Mi código a continuación. Devuelve los mismos resultados al obtener la lista de compras en $breakfast, pero si obtengo una lista de compras para todo $cookbook hay algunos problemas. Algo parece estar mal aquí.

¿Alguna idea?

<?php
público función getCombinedIngredients()
    {
        $ingredients = de caracteres. Lo último es el tipo de cosa que devuelve el método "toCharArray()".();
        foreach($this->recetas como $recipe){
            foreach($recipe->obtenerIngredientes() como $ing){
                $item = $ing[elemento];
                if(strpos($item, ,)){
                    $item = strstr($item, ,, verdadero);
                }
                if(in_array($item.s, $ingredients)){
                    $item.=s;
                } else if(in_array(substr($item, 0, -1), $ingredients)){
                    $item = substr($item, 0, -1);
                }
                $ingredients[$item] = de caracteres. Lo último es el tipo de cosa que devuelve el método "toCharArray()".(
                    $ing[amount],
                    $ing[measure]
                );
            }
        }
        return $ingredients;
    }

PD. Incluso copié y pegué el código del profesor de las notas del profesor y aún obtengo exactamente los mismos resultados. Se devuelven duplicados al aplicar a $cookbook.

Ejemplos:

jaycode,

Desearía poder ayudarte, pero mi PHP está increíblemente oxidado y no sabría por dónde empezar. ¡Espero que encuentres la respuesta!

4 respuestas

Si usamos array_key_exists() en lugar de in_array() esto resolverá una parte del problema ya que nuestros ingredientes se almacenan como una clave de array, en lugar de estar dentro del array.

if(array_key_exists($item."s", $ingredient_list)) {
         $item .= "s";
    } else if (array_key_exists(substr($item, 0 , -1), $ingredient_list)) {
         $item = substr($item, 0, -1);
    }

No estoy 100% seguro de que sea la mejor manera, pero parece funcionar.

Alena Holligan
Alena Holligan
Profesor de Treehouse

La función debería ser "array_key_exists" para buscar la "clave" del array. La función "in_array" buscará un "valor" en el array.

//comprueba si ya existe un ingrediente CON la "s"
    if(array_key_exists($item."s", $ingredient_list)) {
//si es así, AÑADE la "s" para que haya un único elemento
         $item .= "s";
//comprueba si existe un ingrediente sin la "s"
    } else if (array_key_exists(substr($item, 0 , -1), $ingredient_list)) {
//si es así, ELIMINA la "s" para que haya un único elemento
         $item = substr($item, 0, -1);
    }

Me preguntaba si Alena Holligan o alguien más puede proporcionar información sobre esta pregunta. Se hizo hace 2 meses pero sin respuestas. ¡Por favor ayuda!

No entiendo específicamente esta parte del código

if(in_array($item."s", $ingredients)){
                    $item.="s";
                } else if(in_array(substr($item, 0, -1), $ingredients)){
                    $item = substr($item, 0, -1);
                }

¿Por qué $item."s" estaría en el array? Por ejemplo, si buscamos "Huevos", ¿no buscaría $item."s" "Huevoss" con 2 s al final?

¿No tendría más sentido verificar si el último carácter del elemento termina en "s"? Algo como esto....

if(substr($item, -1) == "s")

Estoy totalmente perdido, ¡por favor ayuda!!!

Alena Holligan por favor ayuda. No hay respuestas en ninguna de las preguntas de este vídeo. Varias personas tienen el mismo problema que yo. He estado atascado en este tema durante las últimas 2 semanas y necesito avanzar. Por favor ayuda.