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

Não estou conseguindo mudar a variável usando o &. A unica coisa que consigo fazer é criar uma copia.

<?php

include'banco_funcoes.php';

$conta1 = [

  'nome' => 'arthur',
  'saldo' => 500
];
$conta2 = [

  'nome' => 'perola',
  'saldo' => 20
];
$conta3 = [

  'nome' => 'joao',
  'saldo' => 20
];

$contas_correntes = [
  42 => $conta1,
  32 => $conta2,
  12 => $conta3
];

deixarEmCaixaAlta($conta1);

foreach($contas_correntes as $numero_cadastro => $conta){

    echo "$numero_cadastro - {$conta['nome']} " . PHP_EOL;

};

<?php

function exibeMensagem($mensagem){

echo $mensagem . PHP_EOL;

};

function saque($conta, $saque){

if($conta['saldo'] < $saque){ exibeMensagem("Impossivel efetuar saque, voce so tem $saldo"); } else { $conta['saldo'] -= $saque; }; return $conta['saldo']; };

function deixarEmCaixaAlta(&$cliente){

  $cliente['nome'] = strtoupper($cliente['nome']);

};

1 resposta
solução!

O que acontece é que você está criando uma matriz $conta1 e depois você cria uma matriz $contas_correntes e popula os dados de $conta1 nessa matriz. Quando você faz isso a sua matriz original apenas passa os dados para a matriz de contas correntes, e qualquer alteração feita em $conta1 não será passada para o que já estiver em $contas_correntes.

Se você quiser, deve passar as matrizes de conta por referência para a matriz de contas correntes.

<?php
function deixarEmCaixaAlta(&$a){
    return $a['nome'] = strtoupper($a['nome']);
}

$array = ['nome' => "Joao"];
$arrayDeArray = [
    41 => &$array
];
deixarEmCaixaAlta($array);
var_export($arrayDeArray);