你能帮我理解这个简单的PHP函数吗?

你能帮我理解这个简单的PHP函数吗?,php,Php,我想知道这个函数是如何工作的,这样我可以在ColdFusion中重新编写它。我从来没有用PHP编程过我认为,该函数检查$string的长度是否为11个数字 但它是如何做到的呢 为什么它使用循环而不是简单的len()函数 我读过str_pad(),并理解它。但是循环迭代$i作为第三个参数的功能是什么?它在干什么 if($this->check_fake($cpf, 11)) return FALSE; function check_fake($string, $length) { f

我想知道这个函数是如何工作的,这样我可以在ColdFusion中重新编写它。我从来没有用PHP编程过我认为,该函数检查$string的长度是否为11个数字

  • 但它是如何做到的呢
  • 为什么它使用循环而不是简单的len()函数
  • 我读过str_pad(),并理解它。但是循环迭代
    $i
    作为第三个参数的功能是什么?它在干什么

    if($this->check_fake($cpf, 11)) return FALSE;
    
    function check_fake($string, $length)
    {
       for($i = 0; $i <= 9; $i++) {
       $fake = str_pad("", $length, $i);
       if($string === $fake) return(1);
       }
    }
    

    它基本上确保数字不是:

    11111111111
    22222222222
    33333333333
    44444444444
    55555555555
    

    等等。

    它基本上确保数字不是:

    11111111111
    22222222222
    33333333333
    44444444444
    55555555555
    
    等等。

    附评论:

    function check_fake($string, $length)
    {
        // for all digits
        for($i = 0; $i <= 9; $i++) 
        {
            // create a $length characters long string, consisting of
            // $length number of the number $i
            // e.g. 00000000000
            $fake = str_pad("", $length, $i);
            // return true if the provided CPN is equal
            if($string === $fake) return(1);
        }
    }
    
    函数检查\u伪($string,$length)
    {
    //所有数字
    对于($i=0;$i,带注释:

    function check_fake($string, $length)
    {
        // for all digits
        for($i = 0; $i <= 9; $i++) 
        {
            // create a $length characters long string, consisting of
            // $length number of the number $i
            // e.g. 00000000000
            $fake = str_pad("", $length, $i);
            // return true if the provided CPN is equal
            if($string === $fake) return(1);
        }
    }
    
    函数检查\u伪($string,$length)
    {
    //所有数字
    
    对于($i=0;$i有点离题,但维基百科的一篇文章中有验证伪代码——我很想使用这篇文章,而不是上面的PHP代码。实现一个计算和检查控制数字的算法不是更好吗?人们可能会尝试像12345678901这样的东西,根据你的算法完全正确hm.查看Wikipedia的例子:@middaparka和@Emil Vikstrom,我的代码段中的主函数不是正是这样做的吗?我的观点是,通过死板地翻译PHP代码,您将复制可能出现的任何错误。由于验证没有那么复杂,所以自己实现可能更容易。(当然,您可能会在自己的实现中引入bug,但这很可能发生在翻译过程中。)只是为了说明唯一的无效CPF数字是00000000000和9999999999。所有其他常见输入都是有效的,其中一些甚至被发布。稍微偏离主题,但维基百科上有一篇文章有验证伪代码——我很想使用这篇文章,而不是上面的PHP代码。实现一个算法wh不是更好吗ich计算并检查控制数字?人们可能会尝试像12345678901这样的东西,根据您的算法,这将是完全正确的。查看Wikipedia的例子:@middaparka和@eml Vikstrom,我的代码段中的主函数不正是这样做的吗?我的观点是,通过盲目地翻译PHP代码,您将复制一个可能存在的任何错误。由于验证没有那么复杂,因此自己实现可能更容易。(当然,您可能会在自己的实现中引入错误,但无论如何,这很可能发生在翻译过程中。)只是为了说明唯一的无效CPF编号是00000000000和9999999999。所有其他常用输入都是有效的,其中一些甚至已经发出。