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

Função cadastrar

Bom dia pessoal. Estou tentando cadastrar dados num array usando uma função. Gostaria de ajuda pois nada acontece e também não apresenta erro.

<?php

$contasPoupança = [
    '333.333.333-33' => [
        "titular" => "Vinicius",
        'saldo' => 1000
    ],
    '168.369.887-40' => [
        'titular' => 'Maria',
        'saldo' => 10000
    ],
    '444.444.444-44' => [
        'titular' => 'Gustavo',
        'saldo' => 5000
    ]
];

//para empurar/criar um indice dentro do array
$contasPoupança['111.111.111-11'] = ['titular' => "Carla", 'saldo'  => 2000];

//inicialmente criei esta função
/*function cadastrar($cpfCad, $nome, $valorInicial){
    $contasPoupança[$cpfCad] = ['titular' => $nome, 'saldo' => $valorInicial];
}

cadastrar('222.222.222-22', 'Isabel', 50);*/

//depois tentei usar a mesma sintaxe mas de forma mais direta
function cadastrar(){
    $contasPoupança['222.222.222-22'] = ['titular' => 'Isabel', 'saldo' => 50];
}

cadastrar();

foreach($contasPoupança as $cpf => $conta) {
    echo $cpf , " - ", $conta['titular'], " - ", $conta['saldo'].PHP_EOL;
}
1 resposta
solução!

Bom, entendi que a variável "$contasPoupança" estava fora do escopo da função cadastrar e por isso precisei fazer com que esta variável ficasse global. De qualquer forma, caso a explicação esteja errada ou tenha uma forma melhor de fazer, ficarei grato pelas dicas!

$contasPoupança = [
    '290.338.337-35' => [
        "titular" => "Vinicius",
        'saldo' => 1000
    ],
    '168.369.887-40' => [
        'titular' => 'Maria',
        'saldo' => 10000
    ],
    '106.794.337-40' => [
        'titular' => 'Gustavo',
        'saldo' => 5000
    ]
];

function imprime(){
    //FOREACH para buscar todos os dados do array 
    foreach($GLOBALS['contasPoupança'] as $cpf => $conta) {
        echo $cpf , " - ", $conta['titular'], " - ", $conta['saldo'].PHP_EOL;
    }
}

function cadastrar($cpfCad, $nome, $valorInicial){
    $GLOBALS['contasPoupança'][$cpfCad] = ['titular' => $nome, 'saldo' => $valorInicial];
}

cadastrar('222.222.222-22', 'Isabel', 50);

imprime();