Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como garantir que um array terá os valores que uma função precisa?

Durante as aulas de funções, como que eu posso garantir que uma função de "sacar" irá receber um array com uma das chaves chamadas "saldo" como no código abaixo:


$contasCorrentes = [
    '123.456.789-10' => [
        'titular' => 'Maria',
        'saldo' => 10000
    ],
    '123.456.689-11' => [
        'titular' => 'Alberto',
        'saldo' => 300
    ],
    '123.256.789-12' => [
        'titular' => 'Vinicius',
        'saldo' => 100
    ]
];
function exibeMensagem(string $mensagem)
{
    echo $mensagem . PHP_EOL;
}
function depositar(array $conta, float $valorAdepositar): array
{
    if ($valorAdepositar > 0) {
        $conta['saldo']+= $valorAdepositar;
    } else {
        exibeMensagem("Depositos precisam ser positivos");
    }
    return $conta;
}
function sacar(array $conta, float $valorASacar): array
{
    if ($valorASacar > $conta['saldo']){
        exibeMensagem("Você não tem suficiente");
    }else {
        $conta['saldo'] -= $valorASacar;
    }
    return $conta;
}
$contasCorrentes['123.456.789-10'] =sacar(
    $contasCorrentes['123.456.789-10'], 500
);
$contasCorrentes ['123.456.689-11'] = sacar(
    $contasCorrentes['123.456.689-11'], 200
);
$contasCorrentes ['123.256.789-12'] = depositar(
    $contasCorrentes ['123.256.789-12'], 200
);
foreach ($contasCorrentes as $cpf=>$conta) {
    exibeMensagem($cpf. " " . $conta['titular']. ' ' . $conta['saldo']);
}

E se por acaso, a função recebece um Array qualquer, como faço para validar esse Array que estou recebendo na minha função?

1 resposta
solução!

Olá, Caio. Tudo bem?

Você pode verificar se há uma chave em um array usando a função array_key_exists da seguinte maneira no seu código:

function valida(array $conta):bool
{
    return array_key_exists("saldo",$conta);
}

A função array_key_exists Checa se uma chave ou índice existe em um array, ou seja, estamos checando se a chave saldo existe, se existir, retorna true, caso contrário false.

Na sua função sacar podemos realizar uma verificação da seguinte maneira:

function sacar(array $conta, float $valorASacar): array
{
    $contaValida = valida($conta);

    if ($valorASacar > $conta['saldo'] || $contaValida === false){
        exibeMensagem("Saldo ou conta inválida");
    }else {
        $conta['saldo'] -= $valorASacar;
    }
    return $conta;
}

Dessa forma, toda vez que a função sacar for chamada a função valida será executada antes de tudo, e irá verificar se a chave existe.

Espero ter ajudado! Bons estudos (:

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓