Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

PHP apresenta o índice $CPF de uma forma "diferente"

Ao inserir os cpfs como índices para o array $contasCorrentes, o PHP retorna um valor diferente dos números inseridos. Valores apresentados ao executar echo $cpf:

-539222978 -539222977 -559222976

Pesquisei sobre valores numéricos altos em índices de arrays no PHP, mas não consegui nada para esclarecer minha dúvida. Seria isso um comportamento normal do PHP? Pois parece que ele faz algum tipo de cálculo antes de exibir esses valores...

4 respostas

Bom dia, segundo a documentação de arrays do PHP lá diz que a chave de um array aceita 'números inteiros' ou 'string', no caso, números inteiros tem um limite sim, segue a documentação:

https://www.php.net/manual/pt_BR/language.types.integer.php

Abraço

Fala, Rodolfo. Pode compartilhar seu código pra gente dar uma conferida?

<?php

$contasCorrentes = [
  12345678910 => [
    'titular' => 'Rodolfo',
    'saldo' => 1000
  ],
  12345678911 => [
    'titular' => 'Maria',
    'saldo' => 10000
  ],
  12325678912 => [
    'titular' => 'Alberto',
    'saldo' => 300
  ]
];

$contasCorrentes[12325678913] = [
  'titular' => 'Claudia',
  'saldo' => 2000
];

foreach ($contasCorrentes as $cpf => $conta) {
  echo $cpf . " " . $conta['titular'] . PHP_EOL;
}

// echo $contasCorrentes[12345678911]['titular'];

Estou usando o Git Bash como terminal, mas tentei no terminal do Windows e obtive a mesma resposta:

$ php foreach.php -539222978 Rodolfo -539222977 Maria -559222976 Alberto -559222975 Claudia

A versão do PHP que estou usando: 7.2.2

solução!

Então, Rodolfo.

O limite de variáveis do tipo int em sistemas de 32 bits é de 2147483647. A máquina onde executei os exemplos do curso é de 64 bits, então o limite é maior.

Não se preocupe com isso, pois na próxima atividade (https://cursos.alura.com.br/course/php-arrays-strings-funcoes/task/55519) vamos mudar a forma como definimos o CPF e este problema não vai existir mais.

;-)