ФорумПрограммированиеPHP для идиотов → Проверка на типизацию

Проверка на типизацию

  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 августа 2011 г. 4:27, спустя 1 час 16 минут 6 секунд

    #!/usr/bin/perl
    use strict;
    use Encode;
    use utf8;
    use Inline 'C' => q|
    void test(int i) {
    while(i–){}
    }
    |;


    use Benchmark qw(:all);

    cmpthese(1,{
    perl => sub { my $i=10_000_000; while($i–){}},
    c => sub { test(10_000_000) },
    });



    (warning: too few iterations for a reliable count)
    (warning: too few iterations for a reliable count)
    Rate perl c
    perl 2.06/s – -100%
    c 1000000000000000/s 48499999999999984% –
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 августа 2011 г. 4:34, спустя 7 минут 2 секунды

    не по теме конечно но всё же, оцените мощь C при работе с целыми числами
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 11 августа 2011 г. 8:48, спустя 4 часа 14 минут 30 секунд

    $var = "4.2";
    var_dump(is_int(++$var));
    die();


    так число измениццо, если потом его нуна использовать, то лучше один плюс поставить)) такая же фишка есть в жесе:
    a = 5;
    console.log(typeof a, typeof (''+a)); // number string

    b = '3';
    console.log(typeof b, typeof +b); // string number
    Высокоуровневое абстрактное говно
  • kiwi

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 11 августа 2011 г. 10:15, спустя 1 час 26 минут 40 секунд

    $num = "-12345";
    var_dump(ctype_digit(abs($num)));
  • kiwi

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 11 августа 2011 г. 10:37, спустя 21 минуту 57 секунд

    $num = "1.2345";
    var_dump(is_int(abs($num)));
    ну и с любым другим математическим действием будет ок, но предыдущее еще и отсеит такие варианты, как $num = "2242fvafasf";
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 11:38, спустя 1 час 1 минуту 40 секунд


    $num = (int)$val;
    if ($val == $num) {
    echo 'int';
    } else {
    echo 'not int';
    }
    ?
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 11 августа 2011 г. 12:20, спустя 42 минуты 7 секунд

    новая переменная - уг))
    Высокоуровневое абстрактное говно
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 12:22, спустя 1 минуту 15 секунд



    $num = (int)$val;
    if ($val == $num) {
    echo 'int';
    } else {
    echo 'not int';
    }
    ?
    нет, проверь :)
    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 12:47, спустя 25 минут 13 секунд


    <?php
    function isStringInt($string) {
    $num = intval($string);
    if ($string == $num) {
    return true;
    } else {
    return false;
    }
    }
    $test = array(
    '0',
    '-0',
    '15',
    '-15',
    '13,4567',
    '-13,4567',
    '34.3453',
    '-34.3453',
    '23423fwwer',
    '-23423fwwer',
    '0xFFFFFFFF',
    '-0xFFFFFFFF',
    '016',
    '-016',
    '53.45e2',
    '-53.45e2'
    );
    foreach ($test as $string) {
    echo $string . ((isStringInt($string)) ? ' is int' : ' isn\'t int') . '<br />';
    }


    0 is int
    -0 is int
    15 is int
    -15 is int
    13,4567 is int
    -13,4567 is int
    34.3453 isn't int
    -34.3453 isn't int
    23423fwwer is int
    -23423fwwer is int
    0xFFFFFFFF isn't int
    -0xFFFFFFFF is int
    016 is int
    -016 is int
    53.45e2 isn't int
    -53.45e2 isn't int

    тогда так :)
    <?php
    function isStringInt($string) {
    $num = intval($string);
    if (strlen((string)$string) == strlen((string)$num)) {
    return true;
    } else {
    return false;
    }
    }
    $test = array(
    '0',
    '-0',
    '15',
    '-15',
    '13,4567',
    '-13,4567',
    '34.3453',
    '-34.3453',
    '23423fwwer',
    '-23423fwwer',
    '0xFFFFFFFF',
    '-0xFFFFFFFF',
    '016',
    '-016',
    '53.45e2',
    '-53.45e2'
    );
    foreach ($test as $string) {
    echo $string . ((isStringInt($string)) ? ' is int' : ' isn\'t int') . '<br />';
    }

    0 is int
    -0 isn't int
    15 is int
    -15 is int
    13,4567 isn't int
    -13,4567 isn't int
    34.3453 isn't int
    -34.3453 isn't int
    23423fwwer isn't int
    -23423fwwer isn't int
    0xFFFFFFFF isn't int
    -0xFFFFFFFF isn't int
    016 isn't int
    -016 isn't int
    53.45e2 isn't int
    -53.45e2 isn't int
    Спустя 69 сек.
    а если с ведущими нулями, то считается числом или нет по условию?))
    Спустя 52 сек.
    задание только для дестячной системы счисления? :D
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 13:02, спустя 15 минут 19 секунд


    foreach ($test as $string) {
    echo $string . ((ctype_digit(ltrim($string, '-'))) ? ' is int' : ' isn\'t int') . '<br />';
    }


    0 is int
    -0 is int
    15 is int
    -15 is int
    13,4567 isn't int
    -13,4567 isn't int
    34.3453 isn't int
    -34.3453 isn't int
    23423fwwer isn't int
    -23423fwwer isn't int
    0xFFFFFFFF isn't int
    -0xFFFFFFFF isn't int
    016 is int
    -016 is int
    53.45e2 isn't int
    -53.45e2 isn't int
    Спустя 38 сек.
    -0, хм, интересно, катит?)
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 13:16, спустя 13 минут 19 секунд

    foreach ($test as $string) {
    echo $string . ((sprintf('%d', $string) == $string) ? ' is int' : ' isn\'t int') . '<br />';
    }


    0 is int
    -0 is int
    15 is int
    -15 is int
    13,4567 isn't int
    -13,4567 isn't int
    34.3453 isn't int
    -34.3453 isn't int
    23423fwwer isn't int
    -23423fwwer isn't int
    0xFFFFFFFF isn't int
    -0xFFFFFFFF isn't int
    016 is int
    -016 is int
    53.45e2 isn't int
    -53.45e2 isn't int

    минус ноль существует! xD
    Спустя 92 сек.

    foreach ($test as $string) {
    echo $string . ((sprintf('%d', $string) === $string) ? ' is int' : ' isn\'t int') . '<br />';
    }


    0 is int
    -0 isn't int
    15 is int
    -15 is int
    13,4567 isn't int
    -13,4567 isn't int
    34.3453 isn't int
    -34.3453 isn't int
    23423fwwer isn't int
    -23423fwwer isn't int
    0xFFFFFFFF isn't int
    -0xFFFFFFFF isn't int
    016 isn't int
    -016 isn't int
    53.45e2 isn't int
    -53.45e2 isn't int

    во!
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 11 августа 2011 г. 13:17, спустя 1 минуту 3 секунды

    чет мне кажется, что дуд уже забил))
    Высокоуровневое абстрактное говно
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 13:18, спустя 1 минуту 40 секунд

    да он там щас занятой вроде)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 13:40, спустя 22 минуты 7 секунд


    чет мне кажется, что дуд уже забил))
    да я давно уже сделал)) я же сразу написал, что сделал а потом топик создал "на поржать" :-)

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 13:42, спустя 1 минуту 21 секунду

    так все-таки вариант со спринтфом правильный?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!