Недавно обновлен до PHP 7.1 и начинает получать следующую ошибку
Предупреждение: в строке 29 обнаружено нечисловое значение
Вот как выглядит строка 29
$sub_total += ($item['quantity'] * $product['price']);
На localhost все работает нормально ..
Есть идеи, как с этим справиться или что это такое?
var_dump($item['quantity'], $product['price'])
Ответы:
Похоже, что в PHP 7.1 при обнаружении нечислового значения будет выдано предупреждение. См. Эту ссылку .
Вот соответствующая часть получаемого вами предупреждения:
Я предполагаю, что $ item ['количество'] или $ product ['price'] не содержат числового значения, поэтому убедитесь, что они содержат, прежде чем пытаться их умножить. Возможно, перед вычислением $ sub_total используйте какое-то условие, например:
источник
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
Не совсем то, что у вас было, но та же ошибка для поиска людей.
Это случилось со мной, когда я потратил слишком много времени на JavaScript.
Возвращаясь к PHP, я объединил две строки с «
+
» вместо «.
» и получил эту ошибку.источник
+
, предполагается, что этоint
значение ... в то время как указанные операнды не имеют какого-либо числового типа данных.+
вместо.
. Спасибо!Вы можете решить проблему без какой-либо новой логики, просто добавив значение в число, что предотвращает предупреждение и эквивалентно поведению в PHP 7.0 и ниже:
(Ответ Дэниела Шредера не эквивалентен, потому что $ sub_total останется неустановленным, если встречаются нечисловые значения. Например, если вы распечатаете $ sub_total, вы получите пустую строку, которая, вероятно, неверна в счете-фактуре. - by при кастинге убедитесь, что $ sub_total является целым числом.)
источник
В моем случае это было из-за того, что я использовал
+
как на другом языке, но в операторе конкатенации строк PHP есть.
.источник
Это происходило со мной специально на PHPMyAdmin. Чтобы более конкретно ответить на этот вопрос , я сделал следующее:
В файле:
Я изменил это:
К этому:
Надеюсь, что у кого-то будут проблемы ...
источник
У меня была эта проблема с моей прямой и обратной ссылками на страницы .... просто установите (int) перед переменной $ Page + 1, и это сработало ...
источник
Я столкнулся с проблемой в phpmyadmin с PHP 7.3. Спасибо @coderama, я изменил библиотеки / DisplayResults.class.php строку 855 с
в
Исправлена.
источник
Здравствуйте! В моем случае, использующем (WordPress) и PHP7.4, я получаю предупреждение о проблеме с числовым значением. Поэтому я изменил старый код следующим образом:
Из:
$val = $oldval + $val;
Кому:
$val = ((int)$oldval + (int)$val);
Теперь предупреждение исчезло :)
источник
Убедитесь, что вы не увеличиваете с помощью какой-либо переменной, что ее значение является пустой строкой, например ''.
Пример:
источник
Попробуй это.
и теперь в вашем цикле вы можете использовать это
Это должно решить вашу проблему.
источник
Я только что посмотрел на эту страницу, так как у меня была эта проблема. Для меня у меня были числа с плавающей запятой, вычисленные из массива, но даже после обозначения переменных как с плавающей запятой ошибка все еще давалась, вот простое исправление и пример кода ниже, которые вызывали проблему.
Пример PHP
источник
это код, который у меня был, который зацикливал и создавал новые элементы div html. Код работал нормально и элементы были сформированы, но я получил такое же предупреждение в error_log.
Прочитав другие полезные ответы, я решил, что суммирую строку и число в ошибочной строке. Поэтому я изменил код в этой строке на
Теперь код работает как раньше, но на этот раз без предупреждений. Надеюсь, этот пример будет кому-то полезен.
источник
Решите эту ошибку на WordPress
Здесь простое решение!
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])));
источник
работает 100% :)
источник
Это обычно случается, когда вы соединяете строки со знаком +. В PHP вы можете выполнить конкатенацию, используя знак точки (.) Поэтому иногда я случайно помещаю знак + между двумя строками в PHP, и он показывает мне эту ошибку, поскольку вы можете использовать знак + только в числах.
источник
Убедитесь, что ваша структура столбцов - INT.
источник
Если в вашем коде встречается нечисловое значение, попробуйте указать ниже. Приведенный ниже код преобразуется в float.
источник
в PHP, если вы используете + для конкатенации, вы получите эту ошибку. В php + это арифметический оператор. https://www.php.net/manual/en/language.operators.arithmetic.php
неправильное использование оператора +:
использовать . для конкатенации
источник