PHP:生成没有零和一的有序ID

时间:2016-03-16 11:04:10

标签: php algorithm loops serial-number

我想创建从2到有没有零和一的任何有序数字。

例如1,10,11,15,41,50,60,61等这些是无效的数字

我的尝试:

for($i=0, $ii=1000; $i<$ii; $i++){
     if($i%11){
        continue;
     }
}

但这不起作用

2 个答案:

答案 0 :(得分:2)

您可以将数字视为字符串并搜索字符&#34; 0&#34;和&#34; 1&#34;。

<?php
for($i=0; $i<100; $i++){
  if(strpos((string) $i, '0') !== false) continue; // contains 0
  if(strpos((string) $i, '1') !== false) continue; // contains 1

  echo $i . "\n";
}

请注意strpos()返回给定字符串(又名haystack)中搜索字符串(aka needle)的第一个出现位置,如果未找到匹配则返回false。这就是为什么您必须将strpos()!== false的结果进行比较,因为如果只使用0false也会被视为== false

有关示例的详细文档,请参阅http://php.net/manual/en/function.strpos.php

答案 1 :(得分:0)

生成一个整数,将其转换为八进制字符串,然后将每个数字的值增加2.我不是PHP程序员,所以我会给你伪代码。

foo = 1
octFoo = decoct(foo)
// at this point, octFoo is equal to 1

// Now go through each character in octFoo and increase it by 2.
// So 0 becomes 2, 1 becomes 3, etc.

如果数字为8,则octFoo10,最终结果为32

如果您想编写自己的整数到字符串例程,则可以在没有中间八进制步骤的情况下执行此操作。而不是使用数字0到7,使用数字2到9。