경고: 숫자가 아닌 값이 발견되었습니다.
최근 PHP 7.1로 업데이트되었으며 다음 오류가 표시되기 시작합니다.
경고: 회선29 에서 숫자가 아닌 값이 검출되었습니다.
29호선은 다음과 같습니다.
$sub_total += ($item['quantity'] * $product['price']);
localhost에서는 모두 정상적으로 동작합니다.
어떻게 이 문제를 해결할 것인지 또는 무엇인지 알고 계십니까?
문제가 발생한 것은 아니지만 검색 대상과 동일한 오류입니다.
JavaScript에 너무 많은 시간을 할애했을 때 이런 일이 있었습니다.
두 을 PHP와 했습니다.+
.
에러가 났어요.
PHP 7.1에서는 숫자가 아닌 값이 발생하면 경고가 출력되는 것으로 보입니다.이 링크를 참조해 주세요.
다음은 경고 알림과 관련된 부분입니다.
새로운 E_WARNING 및 E_NOTICE 오류는 숫자를 예상하는 연산자 또는 그 할당에 상당하는 연산자를 사용하여 비활성 문자열이 강제되었을 때 도입되었습니다.E_NOTICE는 문자열이 수치로 시작하지만 말미에 숫자가 아닌 문자가 포함되어 있을 때, E_WARNING은 문자열에 수치 값이 포함되어 있지 않을 때 출력됩니다.
$item['quantity']또는 $product['price'] 중 하나에 숫자가 포함되어 있지 않을 것 같으므로 곱하기 전에 숫자가 포함되어 있는지 확인하십시오.다음과 같이 $sub_total을 계산하기 전에 다음과 같은 조건을 사용합니다.
<?php
if (is_numeric($item['quantity']) && is_numeric($product['price'])) {
$sub_total += ($item['quantity'] * $product['price']);
} else {
// do some error handling...
}
새로운 로직 없이 이 문제를 해결할 수 있습니다.이것은 경고를 방지하고 PHP 7.0 이하의 동작에 해당합니다.
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
(숫자가 아닌 값이 발견되면 $sub_total은 설정되지 않은 채로 있기 때문에 Daniel Schroeder로부터의 답변은 동일하지 않습니다.예를 들어 $sub_total을 출력하면 빈 문자열이 표시되는데, 이는 청구서에 잘못된 것일 수 있습니다.- 캐스팅을 통해 $sub_total이 정수임을 확인합니다.)
같은 에는 제가 사용한 것 .+
연결 연산자는 "PHP"입니다..
.
안녕하세요, 제 경우 (WordPress)와 PHP7.4를 사용하면 수치 문제에 대한 경고가 나타납니다.그래서 이전 코드를 다음과 같이 변경했습니다.
송신원:
$val = $oldval + $val;
수신인:
$val = ((int)$oldval + (int)$val);
이것으로 경고가 사라졌습니다:)
페이지 순방향 링크와 역방향 링크에서 이 문제가 발생했습니다. $Page+1 변수 앞에 (int)를 설정하기만 하면 작동했습니다.
<?php
$Page = (isset($_GET['Page']) ? $_GET['Page'] : '');
if ((int)$Page+1<=$PostPagination) {
?>
<li> <a href="Index.php?Page=<?php echo $Page+1; ?>"> »</a></li>
<?php }
?>
이것은 특히 PHPMyAdmin에서 나에게 일어나고 있었다.이에 대해 보다 구체적으로 답변하기 위해 다음 작업을 수행했습니다.
파일:
C:\ampps\phpMyAdmin\libraries\DisplayResults.class.php
이것을 변경했습니다.
// Move to the next page or to the last one
$endpos = $_SESSION['tmpval']['pos']
+ $_SESSION['tmpval']['max_rows'];
이를 위해:
$endpos = 0;
if (!empty($_SESSION['tmpval']['pos']) && is_numeric($_SESSION['tmpval']['pos'])) {
$endpos += $_SESSION['tmpval']['pos'];
}
if (!empty($_SESSION['tmpval']['max_rows']) && is_numeric($_SESSION['tmpval']['max_rows'])) {
$endpos += $_SESSION['tmpval']['max_rows'];
}
누군가 구해주길 바래...
PHP 7.3에서 phpmyadmin에서 문제가 발생했습니다.@coderama 덕분에 라이브러리/DisplayResults.class를 변경했습니다.php 행 855 ~
// Move to the next page or to the last one
$endpos = $_SESSION['tmpval']['pos']
+ $_SESSION['tmpval']['max_rows'];
안으로
// Move to the next page or to the last one
$endpos = (int)$_SESSION['tmpval']['pos']
+ (int)$_SESSION['tmpval']['max_rows'];
고정된.
이거 먹어봐.
$sub_total = 0;
이제 루프 내에서 이 기능을 사용할 수 있습니다.
$sub_total += ($item['quantity'] * $product['price']);
그게 네 문제를 해결해 줄 거야.
값이 ''와 같은 빈 문자열인 변수를 사용하여 증분하지 않을 경우 선택하십시오.
예:
$total = '';
$integers = range(1, 5);
foreach($integers as $integer) {
$total += $integer;
}
PHP 7.1-7.4
식에 이 포함되어 있을 때 발생합니다( " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "+
,-
,*
, 「」/
int, float bool (int, float bool) ,는 PHP 른른른른른른 。이러한 상황이 발생할 가능성이 있는 것은, 다음의 2가지입니다.
- 스칼라가 필요한 연산을 사용하려는 것은 아닙니다.를 들어, 「」라고 하는 것은,
+
을 의미하는 경우.
(신호) - 숫자를 기대했지만 사용한 값이 숫자에 가깝지도 않습니다.번호가 아닌 것을 파악하고 그에 따라 처리하십시오.
- 를 들어, 「」가 있는 는,
echo 3 + $variable
당신의 ★★★★★★★★.$variable
입니다."n/a"
그 대신 "해당되지 않음"을 에코하는 경우가 있습니다.또는 숫자 이외의 모든 값을 0으로 취급하여에 캐스트할 수도 있습니다.
- 를 들어, 「」가 있는 는,
이 경고들을 수정하세요!PHP 8에서는 "Uncatched TypeError:지원되지 않는 오퍼랜드 유형"입니다.
PHP 8
PHP 7.1-7.4에서 "A non well formed numeric value outcepted"라는 경고를 생성하는 데 사용되었던 코드가 대신 이 경고를 제공합니다.이 문제는 숫자로 시작하지만 숫자가 아닌 문자열인 "추적 문자열"이 있을 때 발생합니다. (계산은 계속되지만 이 문자열은 수정해야 합니다!향후 에러로 업그레이드 될 가능성이 있습니다).예를 들어 다음과 같습니다.
echo 3 + "30 meters";
출력:
경고: X행의 [...][...]에서 숫자가 아닌 값이 발견되었습니다.
33
수정:
echo 3 + (float) "30 meters";
저는 이 문제가 있어서 이 페이지를 보고만 있었습니다.저는 어레이에서 부동소수점 번호를 계산했습니다만, 변수를 부동소수로 지정한 후에도 오류가 발생하였습니다.다음은 문제의 원인이 된 간단한 수정과 코드 예를 제시하겠습니다.
PHP 예시
<?php
$subtotal = 0; //Warning fixed
$shippingtotal = 0; //Warning fixed
$price = array($row3['price']);
$shipping = array($row3['shipping']);
$values1 = array_sum($price);
$values2 = array_sum($shipping);
(float)$subtotal += $values1; // float is irrelevant $subtotal creates warning
(float)$shippingtotal += $values2; // float is irrelevant $shippingtotal creates warning
?>
$sn = 0;//increment the serial number, then add the sn to job
for($x = 0; $x<20; $x++)
{
$sn++;
$added_date = "10/10/10";
$job_title = "new job";
$salary = $sn*1000;
$cd = "27/10/2017";//the closing date
$ins = "some institution";//the institution for the vacancy
$notes = "some notes here";//any notes about the jobs
$sn_div = "<div class='sn_div'>".$sn."</div>";
$ad_div = "<div class='ad_div'>".$added_date."</div>";
$job_div = "<div class='job_div'>".$job_title."</div>";
$salary_div = "<div class='salary_div'>".$salary."</div>";
$cd_div = "<div class='cd_div'>".$cd."</div>";//cd means closing date
$ins_div = "<div class='ins_div'>".$ins."</div>";//ins means institution
$notes_div = "<div class='notes_div'>".$notes."</div>";
/*erroneous line*/$job_no = "job"+$sn;//to create the job rows
$$job_no = "<div class='job_wrapper'>".$sn_div.$ad_div.$job_div.$salary_div.$cd_div.$ins_div.$notes_div."</div>";
echo $$job_no;//and then echo each job
}
새로운 html div 요소를 루프하고 생성한 코드입니다.코드는 정상적으로 동작해, 엘리먼트가 형성되었지만, error_log에서도 같은 경고가 발생했습니다.
유용한 다른 답을 읽은 후, 나는 잘못된 행에 있는 문자열과 숫자를 합산하고 있다는 것을 알았다.그래서 그 줄의 코드를
/*erroneous line*/$job_no = "job"&&$sn;//this is the new variable that will create the job rows
이제 코드는 이전과 동일하게 작동하지만 이번에는 경고 없이.이 예가 누군가에게 도움이 되기를 바랍니다.
WordPress에서 이 오류 해결
경고: C:\XAMPP\htdocs\aad-2\wp-includes\에서 숫자가 아닌 값이 발견되었습니다.694행의 SimplePie\Parse\Date.php
심플한 솔루션!
- 파일을 찾아내다
wp-includes\SimplePie\Parse\Date.php
- 행 번호 694를 찾다
- 당신은 코드를 보여준다.
$second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
- 이 3을 이 행으로 변경합니다).
$second = round((int)$match[6] + (int)$match[7] / pow(10, strlen($match[7])));
$sub_total_price = 0;
foreach($booking_list as $key=>$value) {
$sub_total_price += ($price * $quantity);
}
echo $sub_total_price;
100% 동작하고 있습니다. : )
이것은 보통 + 기호로 줄을 묶을 때 발생합니다.PHP에서는 도트 기호( )를 사용하여 연결을 할 수 있습니다.따라서 PHP에서는 실수로 두 문자열 사이에 + 기호를 넣었는데 숫자만 사용할 수 있기 때문에 이 오류가 나타납니다.
여러분 감사합니다.지금까지:
<?php echo $data['style_headerheight']-3; ?>
에러가 발생했습니다.
PHP 경고: framework/inc/customcss에서 숫자가 아닌 값이 발견되었습니다.78행의 php
이를 수정하기 위해 다음과 같이 대체했습니다.
<?php echo ((int)$data['style_headerheight']-(int)3); ?>
여기서 답변해도 문제가 해결되지 않을 수 있습니다.
내 문제는 정수나 연계가 관련되지 않았다.
문제는 단순한 오타(코드에 오류가 있는 문자열)였습니다.
$conn = new PDO($details, $username, $password); -
어쩌다 보니 코드에 마이너스 기호(-)를 입력하게 되었습니다.이것을 삭제하면, 문제가 해결됩니다.제 추측으로는 PHP가 에러를 일으킨 것 같습니다.왜냐하면 마이너스 부호를 봤기 때문에 거기서 계산을 할 필요가 있었지만 인수가 없었기 때문입니다.
열 구조가 INT인지 확인하십시오.
코드에 숫자가 아닌 값이 있는 경우는, 다음의 1을 시험해 주세요.아래 코드는 float로 변환됩니다.
$PlannedAmount = ''; // empty string ''
if(!is_numeric($PlannedAmount)) {
$PlannedAmount = floatval($PlannedAmount);
}
echo $PlannedAmount; //output = 0
PHP에서 연결에 +를 사용하면 이 오류가 발생합니다.In php +는 산술 연산자입니다.https://www.php.net/manual/en/language.operators.arithmetic.php
+ 연산자의 잘못된 사용:
"<label for='content'>Content:</label>"+
"<textarea class='form-control col-xs-12' rows='7'cols='100' id='content' name='content'>"+$initcontent+"</textarea>'"+
"</div>";
를 사용하여 연결합니다.
$output = "<div class='from-group'>".
"<label for='content'>Content:</label>".
"<textarea class='form-control col-xs-12' rows='7'cols='100' id='content' name='content'>".$initcontent."</textarea>'".
"</div>";
다음의 번호를 사용하고 있는 것을 확인할 필요가 있습니다.
if (is_numeric($item['quantity'])) {
if (is_numeric($product['price'])) {
echo $item['quantity'] * $product['price'];
} else {
echo $item['quantity']. $product['price'];
}
} else {
echo $item['quantity']. $product['price'];
}
$sub_total += ($item['quantity'] * $product['price']);
대체 사용자:
$sub_total += floatval($item['quantity']) * floatval($product['price']);
number_format() 메서드를 사용하여 포맷된 변수 2개를 추가한 후 이 오류가 발생하였습니다.그 이유는 이 방법이 보통 당신의 번호의 형식을,
separator 인수(옵션)를 다음과 같이 지정하지 않는 한null
예를 들어, 다음과 같은 코드가 있다고 합시다.
$subtotal = 6556.7;
$vat = number_format(0.175 * $subtotal, 2); // 1,147.42
$transactionfee = number_format(0.02 * $subtotal, 2); // 131.13
$total = $subtotal + $vat + $transactionfee; // 6556.7 + 1,147.42 + 131.13 = ERROR
변수 중 에 '다음에 있다'가 되어 있기 에 다음 합니다.,
플로트 유형에는 유효하지 않습니다.
경고: 숫자가 아닌 값이 발견되었습니다...
number_format()
과 .
number_format(number,decimals,decimalpoint,separator)
.
로 지정하면 됩니다.''
는 다음과할 수
$subtotal = 6556.7;
$vat = number_format(0.175 * $subtotal, 2, '.', ''); //1147.42
$transactionfee = number_format(0.02 * $subtotal, 2, '.', ''); //131.13
$total = $subtotal + $vat + $transactionfee; // // 6556.7 + 1147.42 + 131.13 = 7835.25
나처럼 아직도 머리를 찧고 있는 사람들이 아니라면 늦었을지도 모른다.내 경우 PHP 5.6에서 개발된 레거시 프로젝트였지만 수정해야 할 때는 PHP 7.1을 실행하고 있었습니다.굳이 바꾸지 않았어요.(돈을 지불하지 않으면 안 된다) 그래서 문제는 PHP 7.1이 PHP 5.6보다 더 엄격하다는 것입니다.
PHP 5.6에서는 다음을 수행할 수 있습니다.
$totalPrice = ' '
$someFoo = $totalPrice + 100
// This is totally fine. And PHP will not yell about it.
PHP 7.1에서는 에러가 발생합니다.
$totalPrice = ' '
$someFoo = $totalPrice + 100
// Error : A non-numeric value encountered.
그 을 '이행'으로 $totalPrice = 0
모든 게 성공했어
누군가 유용하게 써주길 바란다.
언급URL : https://stackoverflow.com/questions/42044127/warning-a-non-numeric-value-encountered
'programing' 카테고리의 다른 글
true는 1이고 false는 0입니까? (0) | 2022.09.18 |
---|---|
JavaFX FXML 컨트롤러 - 생성자 vs 초기화 메서드 (0) | 2022.09.18 |
Java에서의 JSON 오브젝트 해석 (0) | 2022.09.18 |
python에서 개인 모듈 함수 정의 (0) | 2022.09.18 |
Java 스위치 문의 여러 케이스 (0) | 2022.09.18 |