PHP: Bir örnek ikili dize sadece 1 ve 0 olsaydı nasıl kontrol edersiniz?

2 Cevap php

PHP bir sayı uygun ikili olup olmadığını kontrol etmek istedim. Şimdiye kadar ben 8 ile tasavvur edilebilir olup olmadığını kontrol etmek için bu ekledik:

if(strlen($binary) % 8 == 0){
        return true;
} else {
        return false;
}

Bu çalışır, ancak tabii ki, diğer sayılar gibi 22229999 gibi yerleştirilmesini sağlar.

Hangi yöntem Eminim sadece 1 ve 0 dize vardır yapmak için kullanabilirsiniz? Bu konuda gitmek nasıl böyle 10001001 gibi. emin değil.

2 Cevap

Bu regex motoru kadar ateş daha hızlı olabilir:

if (strspn ( $subject , '01') == strlen($subject)) {
    echo 'It\'s binary!';
} else {
    echo 'Not binary!';
}

If you just look for simple characters or want to count them, regex is often quite slow while one or two built in string function can do the job much faster. Maybe this does apply here, maybe not.

Bu işe yaramayabilir, yorumlarda bazı sözler duyduktan sonra, burada bir test vakası:

<?php

$strings = array('10001001', '22229999', '40004000');

foreach ( $strings as $string )
{
    if ( strspn( $string, '01') == strlen( $string ) ) {
        echo $string . ' is binary!' . "\n";
    } else {
        echo $string . ' is NOT binary!' . "\n";
    }
}

Bu iş yapar.

if (preg_match('~^[01]+$~', $str))
{
    echo 'is binary';
}

Techpriester cevabı esinlenerek (fixed bug):

if (in_array(count_chars($str, 3), array('0', '1', '01'))
{
    echo 'is binary';
}