5

次のコードでエラーが発生します。

<?php

    $val1 = $totalsum;
    $res = ( $val1 / $val2) * 100;
    $val2 = count($allcontent);
    $res = ( $val1 / $val2) * 100;
    // 1 digit after the decimal point
    $res = round($res, 1); // 66.7

    echo "Success: ";
    echo $res;
    echo "%";

?>

私はこの行を追加しようとしました:

if ($res === 0) 
{ 
   echo "not eligible"; 
}

それでもエラーが発生します。何か案は?

4

5 に答える 5

2

コードには次のものがあります。

$val2 = count($allcontent);

$allcontent配列が空の場合、の値は$val2になり0、基本的には次のようになります。

$res = ( $val1 / 0) * 100;

予想どおり、これにより PHP は「0 による除算」エラーを返します。

これが起こらないようにするには、次のifステートメントを使用します。

if ($val2 != 0) {
    $res = ( $val1 / $val2) * 100;
    // 1 digit after the decimal point
    $res = round($res, 1); // 66.7
    echo "Success: ";
    echo $res;
    echo "%";
}

これは、次を使用して書き換えることができますsprintf()

if ($val2 > 0) {
    $res = round( ($val1 / $val2) * 100 , 1); // 66.7
    echo sprintf('Success: %d%%', $res); // % is used for escaping the %
}

それは同じことをしますが、私の意見では、もう少しきれいに見えます。

于 2013-10-18T18:31:34.843 に答える
1
if($val2!=0){
  //Do it
}else{
  //Don't
}
于 2013-10-18T18:30:24.420 に答える
0

$val1 を除算する前に、$val2 がゼロでないことを確認してください。これを試して:

<?php
    $val1 = $totalsum;
    $res = ( $val1 / $val2) * 100;
    $val2 = count($allcontent);

    if( $val2 != 0 ){
        $res = ( $val1 / $val2) * 100;
        // 1 digit after the decimal point
        $res = round($res, 1); // 66.7
        echo "Success: ";
        echo $res;
        echo "%";
    }
?>
于 2016-10-04T13:13:41.873 に答える
-2

私は$val20になると推測して$allcontentいます。初期化され、満たされていることを確認してください。

于 2013-10-18T18:30:53.887 に答える