FILTER_VALIDATE_INT
:$input = "22";
$test = filter_var( $input, FILTER_VALIDATE_INT);
if( $test === false) throw new Exception("не целое что-то");
$test // содержит точно целое число
$tests = [
'5qwerty' => false,
'55' => 55,
'1234567890' => 1234567890,
'123Z456' => false,
'A10' => false,
];
$start = microtime(true);
for ($i = 0; $i <= 1E6; $i++) {
foreach( $tests as $test => $result) {
if( $result !== filter_var( $test, FILTER_VALIDATE_INT)) throw new Exception("Mismatch");
// if( !!preg_match('/^\d+$/', $test) !== !!$result) throw new Exception("Mismatch");;
}
}
echo (microtime(true) - $start) . PHP_EOL;
$arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9);
$len = 3; // длина строки
// из массива данных для одной строки делает разметку строки
function make_row( $arr) {
return '<tr>' . implode( '', array_map( 'make_td', $arr)) . '</tr>';
}
// из данных одной ячейки делает разметку ячейки
function make_td( $td) { return '<td>' . $td . '</td>'; }
$rows = array_chunk( $arr, $len); // массив массивов по 3 эл.
$rowsHtml = array_map( 'make_row', $rows); // массив строк
$tableHtml = '<table>' . implode( "\n", $rowsHtml) . '</table>';
echo $tableHtml;
$('.class').hover(
function() {
var $el = $(this);
$el.addClass('active');
setTimeout(function() {
$el.removeClass('active')
}, 500);
}
);
// getTimeTill.php
$deadline = strtotime("2017-07-01 03:00:00");
echo round( 1000 * $deadline - 1000 * microtime(true)); // в миллисекундах
var start = (new Date).getTime();
$.get("getTimeTill.php", function( ms ){
var bias = Math.round(((new Date).getTime() - start) / 2);
var remains = ms + bias; // сколько остаётся микросекунд до события на данный момент
var deadline = (new Date).getTime() + remains; // локальное время События
// можно запускать таймер, который раз в 200 ms будет обновлять время до События
var el = document.getElementById("timer");
window.setInterval( function(){
var remains = Math.floor((deadline - (new Date).getTime())/1000);
var H = Math.floor( remains / 3600);
remains -= 3600 * H;
H = ( '0' + H ).substr(-2);
var M = Math.floor( remains / 60);
remains -= 60 * M;
M = ( '0' + M ).substr(-2);
var S = ( '0' + remains ).substr(-2);
timer.innerText = "" + H + ":" + M + ":" + S;
}, 200);
});
var eur = "10.50 EUR";
var price = parseFloat( s.substr( 0, s.length - 4)).toFixed(2); // "10.50"
var q = "55"; // jQuery возвращает строку
var total = parseFloat( price) * parseInt(q);
total = total.toFixed(2); // строка, точно два знака после запятой
var i, collection = document.getElementsByClassName('hello');
for( i = 0; i < collection.length; i++) {
collection[i].addEventListener('click', onClick);
}
function onClick() {
var i, index = -1;
for(var i=0; i < collection.length; i++) {
if( this === collection[i]) {
index = i;
break;
}
}
if( !!~index) alert(index);
}
$uslovie ?: $esli_false
вернёт само $uslovie
, если то соответствует true
.condition && do_it();
var test = true;
test && console.log("it was true!");
// или назначение
var Boo = test && "если тру"; // иначе Boo === test (что он там возвращает, 0, NaN, false?)
function ip2n( $ip ) { // строку ip перевести в целое
$ipa = explode('.', $ip);
return $ipa[0]<<24 | $ipa[1] << 16 | $ipa[2] << 8 | $ipa[3];
}
function n2ip( $n ) { // целое перевести в строку ip
return implode('.', array(
$n >> 24 & 0xFF,
$n >> 16 & 0xFF,
$n >> 8 & 0xFF,
$n & 0xFF
));
}
function bitreverse( $n ) { // развернуть порядок бит в 32-битном целом
return bindec( strrev( sprintf( '%032b', $n)));
}
$ips = array(
'192.168.1.15',
'192.168.1.16',
'192.168.1.17',
'95.181.217.91',
'95.181.217.96',
'95.181.217.97',
'91.216.3.90',
'91.216.3.91',
'91.216.3.99',
'5.62.157.78',
'5.62.157.84',
'5.62.157.87',
);
$ips = array_map( 'ip2n', $ips);
$ips = array_map( 'bitreverse', $ips);
sort( $ips, SORT_NUMERIC);
$ips = array_map( 'bitreverse', $ips);
$ips = array_map( 'n2ip', $ips);
print_r($ips);
/* Array
(
[0] => 95.181.217.96
[1] => 192.168.1.16
[2] => 5.62.157.84
[3] => 91.216.3.90
[4] => 5.62.157.78
[5] => 95.181.217.97
[6] => 192.168.1.17
[7] => 91.216.3.99
[8] => 95.181.217.91
[9] => 91.216.3.91
[10] => 5.62.157.87
[11] => 192.168.1.15
) */
У Остапа Бендера в мешке 100 слонов, из которых k разноцветных, и он раздает их m детям по слону в руки (k < m < 100
). Сколькими способами может состояться раздача слонов?
m
способами.m – 1
способом.N = 100 * m * 99 * (m-1) * ... * (100 - m) * 1
N = 100! / m! * m! = 100!
100!
(100 факториал)