Shopping list within function [closed]

0

I am trying to solve an exercise that I am doing in PHP (I am a beginner) but I am not able to make the code work, the following message is displayed:

  

"Notice: Undefined variable: products in C: \ xampp \ htdocs \ teste3.php on   line 39 "

Code :

$br = "</br>";

function lista($artigos) {

    $produtos = array(
        'Leite' => array('preco' => 0.8, ),
        'Iogurte' => array(
            'preco' => 0.25,
        ),
        'Queijo' => array(
            'preco' => 2.2,
        ),
        'Peixe' => array(
            'preco' => 3.1,
        ),
        'Carne' => array(
            'preco' => 3.5,
        ),
        'Bolachas' => array(
            'preco' => 0.6,
        ),
    );

}
if (isset($_GET['produto'])) {
    if (isset($_GET['quantidade'])) {
        echo 'Preço por unidade: '.$produtos[$_GET['produto']]['preco'].
        '<br>';
        echo 'Preço total: '.$produtos[$_GET['produto']]['preco'] * $_GET['quantidade'];
    } else {
        echo 'nao existe essa quantidade';
    }
} else {
    echo ' nao existe esse produto!';
}

Exercise:

    
asked by anonymous 31.08.2016 / 17:57

2 answers

3

For the next it is better to put the relevant part here, to help those who want to help, not everyone has the time / wants to go to external links to see code.

You can do this, I suggest these improvements:

<?php
function procurar($produto) {
    $produtos = array(
        'Leite' => array('preco' => 0.8,
        ),
        'Iogurte' => array(
            'preco' => 0.25,
        ),
        'Queijo' => array(
            'preco' => 2.2,
        ),
        'Peixe' => array(
            'preco' => 3.1,
        ),
        'Carne' => array(
            'preco' => 3.5,
        ),
        'Bolachas' => array(
            'preco' => 0.6,
        ),
    );
    $produto = ucwords(strtolower($produto));
    if(array_key_exists($produto, $produtos)) {
        return $produtos[$produto];
    }
    return false;
}
if(isset($_GET['produto'])) {
    $prod = procurar($_GET['produto']);
    if($prod) {
        if(isset($_GET['quantidade'])) {
            echo 'Preço por unidade: ' .$prod['preco']. '<br>';
            echo 'Preço total: ' .$prod['preco']*$_GET['quantidade'];
        }
        else {
            echo 'nao existe essa quantidade';
        }
    }
    else {
        echo ' nao existe esse produto!';
    }
}
else {
   echo 'Produto invalido';
}

The function should return something, in this case it returns the data of the product that wants, I also made so that the search by key in the array is case insentient

    
31.08.2016 / 18:17
2

Use isset before to check if the variable has been defined.

function verificarProduto($produto, $quantidade) {
    $produtos = array('Leite' => array('preco' => 0.8, ),
                      'Iogurte' => array('preco' => 0.25, ),
                      'Queijo' => array('preco' => 2.2, ),
                      'Peixe' => array('preco' => 3.1, ),
                      'Carne' => array('preco' => 3.5, ),
                      'Bolachas' => array('preco' => 0.6, ),
                );

     if ($produto) {
         // Verifica se o produto existe na lista de produtos
         if (isset($produtos[$produto])) {
             // Pega o preço do produto
             $preco = $produtos[$produto]['preco'];
             echo "{$produto} existe na lista! Preço por unidade: {$preco} <br>";

             // Se a quantidade for especificada
             if ($quantidade) {
                 $total = $quantidade * $preco;
                 echo "Total: {$total} <br>";
             }
         }
         else {
             echo "{$produto} não existe. <br>";
         }
     }
}

// Verifica se foi atribuído os valores, em caso negativo, atribui-se "false" 
$produto = isset($_GET['produto']) ? $_GET['produto']: false;
$quantidade = isset($_GET['quantidade']) ? $_GET['quantidade']: false;

verificarProduto($produto, $quantidade);
    
31.08.2016 / 18:42