2016-11-21 10 views
0

私は何千という記事のビュー数を返すPHP関数を持っています。たとえば、1240ビューの記事は、1.2kとして表示されます。未定義のオフセット通知を与えるPHP関数

私がこれに使用している機能は完全に機能しています。これは、関数である:私は行番号を強調し

PHP Notice: Undefined offset: 1 in xxx/functions.php on line 78 
PHP Notice: Undefined offset: -1 in xxx/functions.php on line 79 

function kconvert($num) { 
    $x = round($num); 
    $x_number_format = number_format($x); 
    $x_array = explode(',', $x_number_format); 
    $x_parts = array('k', 'm', 'b', 't'); 
    $x_count_parts = count($x_array) - 1; 
    $x_display = $x; 
    $x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : ''); <-- line 78 
    $x_display .= $x_parts[$x_count_parts - 1]; <!-- line 79 
    return $x_display; 
}; 

問題は毎回のはこの関数は、実行されるすべてのページのロードのため、これはerror_logににPHP通知を書き込み

上記の関数では

この関数がロードされるたびにPHP通知を与えないようにする方法はありますか?ありがとう!

+0

を発生する場所、それがある!==ここでやって? –

+0

正しい状況下では、この機能は機能しており、通知を出さないと言っていますか?そうであれば、状況が正しくないとき(その入力 '$ num'が不完全であるか、数値でないか、設定されていないとき)、それが呼び出されないようにするロジックが必要です。 _calls_機能をしてくださいコードを投稿してください/ –

+0

ジョン、実際に私はしました。ごめんなさい。 – NikxDa

答えて

1

のみテスト数が1000未満の場合は、エラーとは何

function kconvert($num) { 
    $x = round($num); 
    if($num >= 1000){ 
     $x_number_format = number_format($x); 
     $x_array = explode(',', $x_number_format); 
     $x_parts = array('k', 'm', 'b', 't'); 
     $x_count_parts = count($x_array) - 1; 
     echo $x_count_parts; 
     $x_display = $x; 
     $x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : ''); 
     $x_display .= $x_parts[$x_count_parts - 1]; 
     return $x_display; 
    }else{ 
     return $num; 
    } 
}; 
+0

これはトリックでした。どうもありがとう! –

+0

実際、OPはそのフォーマットを "キャスト"しようとする前に入力番号をテストする必要があります。小さな数字でも数千を表示したい場合は、 'if(strlen($ x_number_format)<= 3)$ x_number_format = '0'のようなことをする必要があります。 $ x_number_format; '(すなわち、ある種の先行ゼロ)、' $ x_number_format'を計算した直後。 –

0
function kconvert($num) { 
    $x = round($num); 
    $x_number_format = number_format($x); 
    $x_array = explode(',', $x_number_format); 
    $x_display = $x; 
    if (count($x_array) > 1) { 
    $x_parts = array('k', 'm', 'b', 't'); 
    $x_count_parts = count($x_array) - 1; 
    $x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : ''); 
    $x_display .= $x_parts[$x_count_parts - 1]; 
    } 
    return $x_display; 
}; 
関連する問題