PHP $string内存泄漏


php $string memory leak

像 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变得大于内存量。

我会做这样的事情,但我不确定你想做什么。 扩展输出会有所帮助。

代码未经测试

如果你想反转单词,这是。

如果你想反转每个角色...<<''br>

取代

$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;
}