Я хочу создать упорядоченные числа от 2 до любого без нулей и единиц.
например, 1, 10, 11, 15, 41, 50, 60, 61 и т. д. это недействительные номера
Моя попытка:
for($i=0, $ii=1000; $i<$ii; $i++){
if($i%11){
continue;
}
}
но это не работает
Вы можете рассматривать числа как строки и искать символы «0» и «1».
<?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()
возвращает позицию первого вхождения строки поиска (он же игла) в заданной строке (он же стог сена) или false
если совпадений не найдено. Вот почему вы должны сравнить результат strpos()
с !== false
как результат 0
будет считаться false
тоже если просто с помощью == false
,
Увидеть http://php.net/manual/en/function.strpos.php для подробной документации с примерами.
Создайте целое число, преобразуйте его в восьмеричную строку, а затем увеличьте значение каждой цифры на 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, octFoo
было бы 10
и конечный результат будет 32
,
Вы можете сделать это без промежуточного восьмеричного шага, если хотите написать собственную подпрограмму для целочисленных значений. Вместо того, чтобы использовать цифры от 0 до 7, используйте цифры от 2 до 9.