Search for something in a list and say whether it exists or not - Display Value, and sum of quantity

2

Good afternoon, what is the easiest way to make a list that contains multiple items, for example meat, fish, pao etc, and from the $ _GET multi-item know whether the product exists or not? I tried to create an array and do with array_key_exist but I can not. Thank you

    
asked by anonymous 08.07.2016 / 19:00

2 answers

1

Do so:

$produtos = array(
    'Leite' => array(
        'preco' => 1.5,
    ),
    'Chocolate' => array(
        'preco' => 10,
    ),
    'Pão' => array(
        'preco' => 3.5,
    ),
    'Sal' => array(
        'preco' => 0.5,
    ),
);
// EX: aceda a www.seusite.com?produto=Leite&quantidade=5 e depois:
if(isset($_GET['produto'])) {
    echo 'Preço por unidade: ' .$produtos[$_GET['produto']]['preco']. '<br>';
    if(isset($_GET['quantidade'])) {
        echo 'Preço total: ' .$produtos[$_GET['produto']]['preco']*$_GET['quantidade'];
    }
    else {
        echo 'Preço total: ' .$produtos[$_GET['produto']]['preco'];
    }
}
else {
    echo 'Produto indefinido';
}
    
08.07.2016 / 19:15
1

If you want to do this in the $ _GET variable, consider adding multiple items in the same index as the GET parameter.

See:

url?itens[]=pão&itens[]=leite&itens[]=ovo

In PHP this would return:

 print_r($_GET['itens']); // ["pão", "leite", "ovo"]

For the url to be as specified in the comment, you need to declare the form like this:

 <input type="text" name="itens[]" value="ovo" />
 <input type="text" name="itens[]" value="pão" />

To check, just save a list of expected values and compare:

 $valores = $_GET['itens'];

 ksort($valores);

 $obrigatorios = ['leite', 'ovo', 'pão']

 var_dump($valores === $obrigatorios);

Another way to do the check would be to use the array_intersect function:

count(array_intersect($obrigatorios, $valores)) > 0
    
08.07.2016 / 19:09