我有一个PHP函数,可以以千为单位返回文章的观看次数。例如,一篇包含1240个视图的文章将显示为1.2k
我正在使用的功能完美无缺。这是功能:
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;
};
问题在于每次执行此函数时,每次加载页面时,都会将PHP通知写入error_log:
PHP Notice: Undefined offset: 1 in xxx/functions.php on line 78
PHP Notice: Undefined offset: -1 in xxx/functions.php on line 79
我在上面的函数中突出显示了行号。
有没有办法确保每次加载时此函数都没有给出PHP通知?谢谢!
答案 0 :(得分: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;
}
};
答案 1 :(得分: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;
};