какой вариант быстрее?
Код - пример #1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function convert_bla_bla($numb)
{
$numb = (string)$numb;
$leng = strlen($numb);
if($leng==9) $numb = '0'.$numb;
elseif($leng!=10) return 'error: invalid input data.';
if(preg_match('/[^0-9]/',$numb)) return 'error: invalid input data.';
$numb[
(
Read more... )
Comments 48
лучше is_numeric или is_integer использовать. бить пополам и два раза запускать is_numeric - будет быстрее.
а еще лучше не вырезать из строки, а собрать новую, если у тебя длина максимум 10.
типа,
function foo($n)
{
$n = (string)$n;
$l = strlen($n);
return ( $l != 9 && $l != 10 || !is_numeric( $n ) /* надо проверить на 9999999999 */ )
? 'error: invalid input data.'
: (substr( $n, -10, 4 ).$n{5}.substr( $n, -3, 3 ));
}
Reply
если is_numeric не хватает - попробуй $n+0==$n
можно еще все через $n{х} складывать - может и быстрее будет...
только тогда надо убедится, что строка из 10. как в твоих вариантах.
Reply
Код - пример #1
1
2
3
4
5
6
7
8
9
10
11
12
function convert_bla_bla($numb)
{
$numb = (string)$numb;
$leng = strlen($numb);
if($leng==9) $numb = '0'.$numb;
elseif($leng!=10) return 'error: invalid input data.';
if(!is_numeric($numb)) return 'error: invalid input data.';
return '101'.$numb{0}.$numb{1}.$numb{2}.$numb{3}.$numb{5}.$numb{8}.$numb{9};
}
print convert_bla_bla('2709073792');
?>
Reply
приходите еще.
Reply
может быть с точки зрения байт кода первый вариант слегка быстрее потому что нету CALL на вызовы,
а он дороже чем обычное присваивание по индексу =)
а вот с точки зрения логики, присвоение будет работать не так как substr_replace
когда ты присваиваешь в строку
ты не удаляешь ... ты просто ставишь NULL в соответсвующий байт памяти
var_dump($numb);
сделай после $numb[7]
сам все поймешь
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment