Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

GustavoMZ

[Resolvido] erro ao converter string para float

Recommended Posts

Tenho a variável $correios_info vinda da url dos Correios com um xml.

 

Jogo os dados dessa variável para um array:

$array=file($correios_info);
Como sei que a chave do valor do frete (que é só o que eu quero) está na posição 18 do array faço o seguinte:

$frete=$array[18];
A variável $frete passa a conter uma string no seguinte formato: 10.6

 

Para somar esse valor a compra do usuário (é um carrinho de compras com cálculo de frete) preciso que seja um float e não uma string.

 

Mas quando vou converter para float assim:

$frete=(float)$frete;
Ou assim:

$frete=number_format($frete, 2, ',', '.');
Ou assim:

$frete=settype($frete, 'float');
Retorna 0 (zero)

 

Ele está convertendo para booleano, alguém sabe porque está convertendo para booleano em vez de converter para float? :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste:

 

$frete = $array[18];
var_dump($frete);

$frete = trim($frete);
var_dump($frete);

$fretef = (float)$frete;
var_dump($fretef);

$freten = number_format($frete, 2, ',', '.');
var_dump($freten);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gustavo,

 

faça:

 

$frete = floatval($array[18]); 
var_dump($frete);

Compartilhar este post


Link para o post
Compartilhar em outros sites

que tal:

 

var_dump (floatval(settype(trim($array[18])),"float"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código do Anderson Ferminiano:

<?php

$frete = preg_replace("/[^0-9.]/", "", $array[18]);

$fretef = (float)$frete;
var_dump($fretef);

?>

Retorna: float(11.2)

 

Sucesso!!!

 

Obrigado Anderson e a todos que contribuiram!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de ter resolvido, qual a necessidade de fazer isto, já que o PHP faz o cast automaticamente? Vejamos um exemplo:

$string = '11.2';
var_dump($string);
$float = 26.6;
var_dump($string + $float);
Isto retornará string(4) "11.2" float(37.8). Veja que a soma foi realizada.

 

PS: Não coloque valores inteiros ou float entre aspas. Fiz ali em cima só para exemplificar que o PHP soma mesmo que o valor seja uma string.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.