GustavoMZ 1 Denunciar post Postado Janeiro 23, 2010 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
~TiuTalk~ 7 Denunciar post Postado Janeiro 23, 2010 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
GustavoMZ 1 Denunciar post Postado Janeiro 23, 2010 A saída no navegador foi a seguinte: string(35) "11.2" string(33) "11.2" float(0) string(4) "0,00" 11.2 é o valor que preciso. Compartilhar este post Link para o post Compartilhar em outros sites
tarilonte 0 Denunciar post Postado Janeiro 23, 2010 Olá Gustavo, faça: $frete = floatval($array[18]); var_dump($frete); Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 23, 2010 <?php $frete = "10.6"; $fretef = (float)$frete; var_dump($fretef); ?> retorna 10.6 float, provavelmente sua string está em outro formato Compartilhar este post Link para o post Compartilhar em outros sites
GustavoMZ 1 Denunciar post Postado Janeiro 23, 2010 Olá tarilonte! Esse código $frete = floatval($array[18]); var_dump($frete);retorna: float(0) Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 23, 2010 teste var_dump($array[18]); e retorne o resultado pra gente.. Compartilhar este post Link para o post Compartilhar em outros sites
GustavoMZ 1 Denunciar post Postado Janeiro 23, 2010 Código: var_dump($array[18]);Resultado: string(35) "11.2" Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 23, 2010 tente <?php $frete = preg_replace("/[^0-9.]/", "", $array[18]); $fretef = (float)$frete; var_dump($fretef); ?> Compartilhar este post Link para o post Compartilhar em outros sites
tarilonte 0 Denunciar post Postado Janeiro 23, 2010 que tal: var_dump (floatval(settype(trim($array[18])),"float")); Compartilhar este post Link para o post Compartilhar em outros sites
GustavoMZ 1 Denunciar post Postado Janeiro 23, 2010 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
Matias Rezende 50 Denunciar post Postado Janeiro 23, 2010 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
~TiuTalk~ 7 Denunciar post Postado Janeiro 24, 2010 Código: var_dump($array[18]);Resultado: string(35) "11.2" Repararam isso?! string(35)!! 35 caracteres :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 24, 2010 é, por isso usei o preg_replace, devem ter carácteres estranhos aí rsrs Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 24, 2010 ~Tiu-Talk~, não tinha reparado nisto não... Bizarro... Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites