php函数整数参数问题

php函数整数参数问题,php,Php,如果我用调用该函数,则zipcode有效(08004) 我的参数08004作为8004输入,基本上它删除了所有之前的0 我怎样才能避开那个问题 谢谢将其作为字符串传递,并修改您的函数以使用字符串: function is_zipcode_valid($zipcode){ ... } 使用整数时不可能保留前导零。如果一个整数值有一个前导零,它将在基数8中解释。以下是一个例子: is_zipcode_valid('08004'); 如果存在前导零,PHP将整数视为基数为8的数字。将您的号码作为字

如果我用
调用该函数,则zipcode有效(08004)
我的参数08004作为8004输入,基本上它删除了所有之前的0

我怎样才能避开那个问题


谢谢

将其作为字符串传递,并修改您的函数以使用字符串:

function is_zipcode_valid($zipcode){ ... }
使用整数时不可能保留前导零。如果一个整数值有一个前导零,它将在基数8中解释。以下是一个例子:

is_zipcode_valid('08004');

如果存在前导零,PHP将整数视为基数为8的数字。将您的号码作为
字符串传递

,就像大家说的那样,将其作为字符串传递

如果是php5,你可以通过浇铸来确保它是字符串

echo 010; // Output is 8.

参见Php.Net

注意:也可以用双引号将变量括起来,而不是将变量强制转换为字符串

//从number函数创建zipcode

$zipcode = "$zipcode"; 




  function is_zipcode_valid( $zipcode){ 

   is_string($zipcode) //returns true
 }
使用form_zipcode(55,5)将返回“00055”

昨晚(格林尼治标准时间这里)很抱歉输入错误


按预期工作回报00055
这不是您所需要的???

我将zipcode存储在变量$zipcode中;如何告诉php它是字符串而不是整数?理想情况下,我希望我的函数是防弹的,并且能够处理字符串和整数,我确信有一种方法。@vick-变量的值从哪里来的?如果它来自表单提交,那么它已经是一个字符串了。它在许多地方都有使用。在其他函数中,有时我从mysql获取它并使用该函数,它在大型系统中广泛使用。您可以将它转换为字符串:$val=(string)$val2@维克-只要确保它始终作为字符串处理。如果邮政编码有前导零,一旦将其转换为整数,零可能会不可逆转地丢失。好的,谢谢!!但我希望在函数中发生这种情况。。我希望这是有效的(55);应该在函数中转换为00055。我想说的是,你想要的不是is_zipcode_valid()函数,而是一个form_zipcode()函数,你可以只使用str_pad,我将在上面编辑,当我尝试form_zipcde(01002)时,它不起作用;它返回00514??1.您需要传入两个参数,参数1002被视为八进制数,即514位小数,邮政编码不是数字。它们是碰巧包含数字的标识符。始终将它们作为字符串处理。或者,
sprintf(“%05d”,$zipcode)
也可以使用
$zipcode = "$zipcode"; 




  function is_zipcode_valid( $zipcode){ 

   is_string($zipcode) //returns true
 }
    function form_zipcode($zipcode,$desiredLength){ 
              if(str_len($zipcode) != $desiredLength)
                  {
                       return str_pad($zipcode,$desiredLength,"0",STR_PAD_LEFT);
                  }
                else
                 {
                  return $zipcode;
                  }
       }
    <?php
echo form_zipcode("55",5);

function form_zipcode($zipcode,$desiredLength){ 
              if(strlen($zipcode) != $desiredLength)
                  {
                       return str_pad($zipcode,$desiredLength,"0",STR_PAD_LEFT);
                  }
                else
                 {
                  return $zipcode;
                  }
       }
 ?>