Сообщение от
.:EnoT:.
temp_late
а почему ты не инициализировал переменную $t в самом цикле? и $t++ туда же не засунул? =\
Есть предположение, что на подсчет длины через функцию на каждом цикле будет тратиться больше ресурсов, чем если подсчитать однажды и просто цеплять результат уже из переменной, если мое мнение ошибочно поправьте меня.
Насчет $t++, согласен есть такое, можно, привычка.. вот научили на Pascale так делать. А что будет быстрее если сделать так?:
PHP код:
<?php
$text='! ышвгфращфзышвгарзщыфшварышгвар!!!';
$char=3;// насколько делить
$sizet=strlen($text);
$t=1;
$out='';
for ($i=0;$i<$sizet;$i++,$t++){
if($t>$char){$t=1;$out.='-';}
$out.=$text{$i};
}
echo $out;
?>
Сообщение от
=.:EnoT:.
Специально для таких целей существует функция str_split() ,которая бьёт строку на массивы и не нужно никаких извращений!)
<?php
$text = "ышвгфращфзышвгарзщыфшвар шгва";
$skoka = 3; //По сколько символов разбивать
$arr = str_split($text, $skoka);
for($i=0; $i < count($arr); $i++)
{
$str = $arr[$i]."-";
echo $str;
}
?>
В твоем коде логическая ошибка, функция str_split() кромсает строку в масив по 3 символа, и потом собирает масив в едино, прибавляя в конце '-'.
Ошибка в том что строка не всегда может делиться на три ровно, а тире по заданию нужно поставить через каждые 3 символа,
$text='1234567';
так будет выполнять твой код
123-
456-
7-
последние тире поставилось не через 3 символов, для этого нужно внести следующее условие в твой код:
PHP код:
<?php
$text = "ышвгфращфзышвгарзщыфшварышгва";
$skoka = 3; //По сколько символов разбивать
$arr = str_split($text, $skoka);
for($i=0; $i < count($arr); $i++)
{
if (strlen($arr[$i])==3){$str = $arr[$i]."-";}
else{$str = $arr[$i];}
echo $str;
}
?>
тогда будет правильно, но мне кажется мой код будет проще, и рациональней использовать системные ресусры.
PS:Правильней было бы присвоить текст используя одинарный ковычки:
$text = 'ышвга';
//а так :
$text = "ышвга"; //он будет тратить больше ресурсов, ибо будет искать в текст переменные для их замены.