Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 压缩显示的空间数(如堆栈,但也适用于<;1)_Php_Javascript_Jquery_Mysql - Fatal编程技术网

Php 压缩显示的空间数(如堆栈,但也适用于<;1)

Php 压缩显示的空间数(如堆栈,但也适用于<;1),php,javascript,jquery,mysql,Php,Javascript,Jquery,Mysql,奇怪的是,我找不到这个问题的答案(可能搜索不正确) 我想删除第一个非零数字实例之后的所有数字 例如,如果我有0.00208239,我如何将其降低到0.002,更好的是2m()?这些数据来自MySQL,但通过PHPAJAX路由到id为的div 注意第一个有效数字可以是10^-6到10^-6之间的任意位置。所以,1000.77必须是1000,或者如果你很棒,1k 我用jQuery来解释它,所以js、jQuery、MySQL、PHP的最佳答案是check,但任何有效的解决方案当然都会得到+ 非常感谢

奇怪的是,我找不到这个问题的答案(可能搜索不正确)

我想删除第一个非零数字实例之后的所有数字

例如,如果我有
0.00208239
,我如何将其降低到
0.002
,更好的是
2m
()?这些数据来自MySQL,但通过PHPAJAX路由到id为的div

注意第一个有效数字可以是10^-6到10^-6之间的任意位置。所以,
1000.77
必须是
1000
,或者如果你很棒,
1k

我用jQuery来解释它,所以js、jQuery、MySQL、PHP的最佳答案是check,但任何有效的解决方案当然都会得到+


非常感谢

您可以使用正则表达式获取第一个数字,然后使用查找表添加后缀:

$suffixes = array( 
    -6 => 'µ',
    -5 => '',
    -4 => '',
    -3 => 'm',
    -2 => 'c',
    -1 => '',
     0 => '',
     1 => '',
     2 => '',
     3 => 'k',
     4 => '',
     5 => '',
     6 => 'M',
);

preg_match( '/^[^1-9]*([1-9])/', $str, $matches);
$ten = floor( log( $str, 10));
echo $matches[1] . $suffixes[ $ten ] . "\n";

您可以使用正则表达式获取第一个数字,然后使用查找表添加后缀:

$suffixes = array( 
    -6 => 'µ',
    -5 => '',
    -4 => '',
    -3 => 'm',
    -2 => 'c',
    -1 => '',
     0 => '',
     1 => '',
     2 => '',
     3 => 'k',
     4 => '',
     5 => '',
     6 => 'M',
);

preg_match( '/^[^1-9]*([1-9])/', $str, $matches);
$ten = floor( log( $str, 10));
echo $matches[1] . $suffixes[ $ten ] . "\n";

您可以在使用JavaScript显示数据之前,将数据原始发送并格式化。见:

使用这些值和结果进行测试

0.00208239 ==> 2m
1000.77 ==> 1k
abc ==> 0
0.000000342 (or 3.42e-7) ==> 0.003µ
0.0000234 ==> 0.2µ
1 ==> 1
1.2 ==> 1
注意:如果您想获得
.2µ
而不是
0.2µ
,您所要做的就是将JSFIDLE的行34
n+=scale[i];
)替换为:

n = (n < 1 && n > 0 ? (""+n).substring(1) : n) + scale[i];
n=(n<1&&n>0?(“”+n)。子串(1):n)+标度[i];

在使用JavaScript显示数据之前,您可以将数据原始发送并格式化。见:

使用这些值和结果进行测试

0.00208239 ==> 2m
1000.77 ==> 1k
abc ==> 0
0.000000342 (or 3.42e-7) ==> 0.003µ
0.0000234 ==> 0.2µ
1 ==> 1
1.2 ==> 1
注意:如果您想获得
.2µ
而不是
0.2µ
,您所要做的就是将JSFIDLE的行34
n+=scale[i];
)替换为:

n = (n < 1 && n > 0 ? (""+n).substring(1) : n) + scale[i];
n=(n<1&&n>0?(“”+n)。子串(1):n)+标度[i];

正则表达式?Perl的
s/([0.]+[1-9])[0-9]*/\1/
翻译成PHP…所以。。。如果小于1,则获取第一个非零十进制数字,否则将所有数字四舍五入?是这样吗?@YanickRochon是的,如果有人能教我如何打圆并切掉谷壳,我想我可以加上SI字母。理想的做法是将其显示为stack所做的大容量…但也可以显示小容量,因此
.001
可以是
1m
,但不要担心字母。如果有人能教我如何旋转和切碎,我想我可以通过使用SI符号来迂回前进。谢谢正则表达式?Perl的
s/([0.]+[1-9])[0-9]*/\1/
翻译成PHP…所以。。。如果小于1,则获取第一个非零十进制数字,否则将所有数字四舍五入?是这样吗?@YanickRochon是的,如果有人能教我如何打圆并切掉谷壳,我想我可以加上SI字母。理想的做法是将其显示为stack所做的大容量…但也可以显示小容量,因此
.001
可以是
1m
,但不要担心字母。如果有人能教我如何旋转和切碎,我想我可以通过使用SI符号来迂回前进。谢谢让我们绝对的艺术作品!用这个来填补空白让我们绝对的艺术作品!用这个来填空