zoukankan      html  css  js  c++  java
  • PHP实现实现数字补零格式化

    在接支付SDK的时候,第三方回调处理时需要IP,并且IP的需求是:去掉点号,补零到每地址段3位, 如:192168000001

    先看看我的实现:

    1 <?php
    2 $IP = explode ( '.', '192.168.1.12' );
    3 $NewIP="";
    4 for($i = 0; $i < count ( $IP ); $i ++) {
    5     $NewIP.=str_pad ( $IP [$i], 3, "0", STR_PAD_LEFT );
    6 }
    7 echo $NewIP;
    8 ?>
    结果:192168001012

    php 中有两个函数,能够实现数字补零格式化,str_pad(),sprintf()

    现在分别对这两个函数进行详细分析一下:

    1:str_pad

    顾名思义,str_pad是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串

    例如:str_pad(需要填补的字符串,填补后的长度,填补字符串,填补位置)

    其中填补后的长度必须是个正整数,填补位置有三个选项:

    左边:STR_PAD_LEFT,
    右边:STR_PAD_RIGHT,
    两端:STR_PAD_BOTH

    例如:
    echo str_pad(1,8,”0″,STR_PAD_LEFT);
    结果:00000001

    echo str_pad(1,8,”0″,STR_PAD_RIGHT);
    结果:10000000

    echo str_pad(1,8,”0″,STR_PAD_BOTH);
    结果:00010000

    在上边的例子中值得注意的一个细节是,如果填补的位数是个奇数,例如例三中填补了7个0,右边优先。

    2:sprintf

    a:左边补零
    echo sprintf(”%05d”,1);
    先说%05d的意思,用一个5位数的数字格式化后边的参数,如果不足5位就补零

    运行结果是00005

    b:小数点后补零

    echo sprintf(”%01.3f”,1);

    %01.3f的意思是说,用一个小数点后最少三位不足三位补零,小数点前最少一位,不足一位补零的浮点数格式化后边的参数

    其运行结果是:1.000

    关于补零的这两种方法大家可以挑选着使用,其实各有优劣,sprintf能够保证你不至于误操作吧1补成1000000哈哈,str_pad可以保证你想补啥补啥。

    再来一个小例子:

     1 <?php
     2 function formatNum($arrayName)
     3 {
     4     for($i=0;$i<count($arrayName);$i++)
     5     {
     6         $res[$i]='PQ'.str_pad ($arrayName[$i], 6, "0", STR_PAD_LEFT );
     7     }
     8     return $res;
     9 }
    10 $arrayName = array(1,2,3,4,5,6,7,8,9,10,11,12,13);
    11 $result=formatNum($arrayName);
    12 var_dump($result);
  • 相关阅读:
    PAT 1037. 在霍格沃茨找零钱(20)
    PAT 1036. 跟奥巴马一起编程(15)
    Topcoder SRM633 DIV2 解题报告
    HDU 4565 So Easy! 矩阵快速幂 + 共轭数
    HDU 2256 Problem of Precision 矩阵快速幂 + 共轭数
    FZU 1683 纪念SlingShot 矩阵快速幂
    CodeForces 185A Plant 矩阵快速幂
    HDU 2604 Queuing 矩阵快速幂
    HDU 1575 Tr A 矩阵快速幂
    HDU 1757 A Simple Math Problem 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/Steven-shi/p/5070699.html
Copyright © 2011-2022 走看看