Recentemente atualizado para PHP 7.1 e comece a obter o seguinte erro
Aviso: um valor não numérico encontrado na linha 29
Aqui está a aparência da linha 29
$sub_total += ($item['quantity'] * $product['price']);
No localhost tudo funciona bem ..
Alguma ideia de como lidar com isso ou o que é?
var_dump($item['quantity'], $product['price'])
Respostas:
Parece que no PHP 7.1, um Aviso será emitido se um valor não numérico for encontrado. Veja este link .
Aqui está a parte relevante que pertence ao aviso de Aviso que você está recebendo:
Estou supondo que $ item ['quantidade'] ou $ product ['preço'] não contém um valor numérico, então certifique-se de que eles contenham antes de tentar multiplicá-los. Talvez use algum tipo de condicional antes de calcular o $ sub_total, assim:
fonte
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
Não é exatamente o problema que você teve, mas o mesmo erro para as pessoas que pesquisam.
Isso aconteceu comigo quando eu gastei muito tempo em JavaScript.
Voltando ao PHP, concatenei duas strings com "
+
" em vez de ".
" e recebi esse erro.fonte
+
, assume-se que é umint
valor ... enquanto os operandos fornecidos não são de nenhum tipo de dados numérico.+
vez de.
. Obrigado!Você pode resolver o problema sem nenhuma nova lógica apenas convertendo a coisa no número, o que evita o aviso e é equivalente ao comportamento no PHP 7.0 e abaixo:
(A resposta de Daniel Schroeder não é equivalente porque $ sub_total permaneceria indefinido se valores não numéricos fossem encontrados. Por exemplo, se você imprimir $ sub_total, obteria uma string vazia, que provavelmente está errada em uma fatura. - por cast, certifique-se de que $ sub_total é um inteiro.)
fonte
No meu caso foi por causa de mim usado
+
como em outra linguagem, mas no operador de concatenação de strings PHP é.
.fonte
Isso estava acontecendo comigo especificamente no PHPMyAdmin. Então, para responder mais especificamente a esta , eu fiz o seguinte:
No arquivo:
Eu mudei isso:
Para isso:
Espero que isso salve alguém alguns problemas ...
fonte
Eu tive esse problema com meu link de paginação para frente e para trás .... simplesmente defina (int) na frente da variável $ Page + 1 e funcionou ...
fonte
Encontrei o problema no phpmyadmin com PHP 7.3. Obrigado @coderama, mudei a linha 855 de libraries / DisplayResults.class.php de
para dentro
Fixo.
fonte
Olá, No meu caso usando (WordPress) e PHP7.4 recebo um aviso sobre o problema de valor numérico. Então mudei o código antigo da seguinte maneira:
De:
$val = $oldval + $val;
Para:
$val = ((int)$oldval + (int)$val);
Agora o aviso desapareceu :)
fonte
Verifique se você não está incrementando com alguma variável se seu valor é uma string vazia como ''.
Exemplo:
fonte
Experimente isso.
e dentro do seu ciclo agora você pode usar isso
Isso deve resolver seu problema.
fonte
Acabei de olhar para esta página porque tive esse problema. Para mim, eu tinha números de ponto flutuante calculados a partir de uma matriz, mas mesmo depois de designar as variáveis como pontos flutuantes, o erro ainda era dado, aqui está a correção simples e o código de exemplo que estava causando o problema.
PHP de exemplo
fonte
esse é o código que eu tinha que deu loop e criou novos elementos div html. O código funcionou bem e os elementos foram formados, mas recebi o mesmo aviso no error_log.
Depois de ler as outras respostas úteis, percebi que estava somando uma string e um número na linha errada. Então, mudei o código dessa linha para
Agora o código funciona como antes, mas sem avisos desta vez. Espero que este exemplo seja útil para alguém.
fonte
Resolva este erro no WordPress
Solução simples aqui!
wp-includes\SimplePie\Parse\Date.php
$second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
$second = round((int)$match[6] + (int)$match[7] / pow(10, strlen($match[7])));
fonte
está funcionando 100% :)
fonte
Isso geralmente acontece quando você confunde strings com o sinal +. No PHP você pode fazer concatenação usando sinal de ponto (.) Então às vezes eu coloco acidentalmente + sinal entre duas strings em PHP, e isso me mostra este erro, já que você pode usar + sinal apenas em números.
fonte
Certifique-se de que sua estrutura de coluna seja INT.
fonte
Se um valor não numérico encontrado em seu código, tente abaixo de um. O código a seguir é convertido em float.
fonte
em PHP, se você usar + para concatenação, acabará com este erro. Em php + é um operador aritmético . https://www.php.net/manual/en/language.operators.arithmetic.php
uso incorreto do operador +:
usar . para concatenação
fonte