На 20 лет я продолжаю получать утечку памяти. Я уверен, что просто не вижу, в чем проблема, но надеялся, что кто-то со свежими глазами скажет мне, в чем я ошибаюсь.
—в работе предположим, что вы берете предложение и после каждого слова с запятой меняете слово на обратное, не перемещая его место в предложении.
function bassAckwards($input)
{
//$inputLen = strlen($input);
$stringEnd = 0;
$findme = ',';
$flag1 = true;
$tempOffset = 0;
$string = "";
//Start loop, as long as flag is true
while($flag1 == true){
//find position of next ","$pos = strpos($input, $findme, $tempOffset);
//If $pos is null end loop and return string.
if($pos == false){
$flag1 = false;
}
else{
//$pos is not null so create inner loop and add to string
for($reverse = $pos--; $reverse > $stringEnd; $reverse--){
$string = $string . substr($input, $reverse); // < ------ TempStr will add in substr, which will be added to $string
}
}
$stringEnd = $pos;
$tempOffset = $pos + 1;
}
return $string;
}
print bassAckwards("Php,Cookies,Arrays,Mysql,LAMP");
Ваш код очень плох с точки зрения производительности, попробуйте это
function bassAckwards($input)
{
$findme = ',';
$input = explode($findme, $input);
foreach ($input as $i => $word) {
$input[$i] = strrev($word);
}
return implode($findme, $input);
}
print bassAckwards("Php,Cookies,Arrays,Mysql,LAMP");
Ваша проблема была, вероятно, из-за этого:
for($reverse = $pos--; $reverse > $stringEnd; $reverse--){
Точнее это:
$reverse = $pos--;
Еще точнее это:
$pos--;
Вызывает рекурсивный цикл, в результате чего $ string становится больше, чем объем памяти.
Я бы сделал что-то подобное, но я не уверен, что ты пытался сделать. Примерный вывод помог бы.
Код не проверен
Это если вы хотите поменять слова.
Если вы хотите изменить каждый символ …<<\ Ш>
замещать
$words = explode(' ',substr($input,$e,$s-$e));
С
$characters = str_split(substr(($input,$e,$s-$e));
Обратный режим:
$e = 0;
while(true){
$s = strpos($input, ',', $e);
if ($s){
$words = explode(substr($input,$e,$s-$e));
$words = array_reverse($words);
foreach($words as $val){
$reverseStr .= $val;
}
}
else{
break;
}
$e = $s+1;
}