Php 我的脚本使用更多内存来运行

Php 我的脚本使用更多内存来运行,php,memory-leaks,Php,Memory Leaks,我使用了一些代码来限制在while循环中显示段落中的字符 这是我的代码: //mysqli_stmt_fetch ($stmt); while (mysqli_stmt_fetch($stmt)) { $position=70; // Define how many characters you want to display. // Find what is the last character. $subject = substr($

我使用了一些代码来限制在while循环中显示段落中的字符

这是我的代码:

//mysqli_stmt_fetch ($stmt);    
while (mysqli_stmt_fetch($stmt)) {

      $position=70; // Define how many characters you want to display.      
      // Find what is the last character.
      $subject = substr($subjects,$position,1);

      if($subject !=" "){
         while($subject !=" "){
            $i=1;
            $position=$position+$i;
            $subject = substr($subjects,$position,1); 
         }
      }     
      $subject = substr($subjects,0,$position); 

      echo '<h4><span>Subjects / </span>'.$subject.'.....</h4>';   
}
//mysqli\u stmt\u fetch($stmt);
while(mysqli_stmt_fetch($stmt)){
$position=70;//定义要显示的字符数。
//找出最后一个字符是什么。
$subject=substr($subjects,$position,1);
如果($subject!=“”){
而($subject!=“”){
$i=1;
$position=$position+$i;
$subject=substr($subjects,$position,1);
}
}     
$subject=substr($subjects,0,$position);
回显“主题/”.$subject.“…”;
}
我的问题是运行这个脚本需要很长时间。若我离散$position的值,那个么快速执行脚本,若我增加$position的值,那个么执行脚本需要很长时间

如果它的
$position=80
我就不能让它工作。实际上它根本就没有执行。我的windows任务管理器显示它正在100%使用物理内存

有人能告诉我这是什么原因吗


多谢各位

如果我理解正确,您希望返回字符串的前70个字符,但在第一个空格处将其截断

你可以用这个:

function get_snippet($subject, $count) {

    // if string length is already under the desired char count
    if (strlen($subject) <= $count) return $subject;

    // find first space char after desired position
    $pos = strpos($subject, ' ', $count);

    if ($pos === false) return $subject;   // no space, must be end of the string so return entire text
    else return substr($subject, 0, $pos) . '...'; // return all chars up to first space
}

如果我理解正确,您希望返回字符串的前70个字符,但在第一个空格处将其截断

你可以用这个:

function get_snippet($subject, $count) {

    // if string length is already under the desired char count
    if (strlen($subject) <= $count) return $subject;

    // find first space char after desired position
    $pos = strpos($subject, ' ', $count);

    if ($pos === false) return $subject;   // no space, must be end of the string so return entire text
    else return substr($subject, 0, $pos) . '...'; // return all chars up to first space
}

听起来像是一个无限循环。您可以只计算空格的数量,可能在
trim($subject)
之后,然后在退出或添加空格数量(可能是添加)之后再进行子字符串。您可以用一个示例演示它吗?谢谢您您应该检查($subject!==false)这是否是由于主题列表非常丰富(无论来自何处),或者
while
是一个无限循环(从不存在)。不清楚您想用
$subject
$position
做什么。你能简单地描述一下这对输出意味着什么吗?当
$subjects
少于70个字符时(在这种情况下,$subject!=“”)时,你的代码卡在
上。听起来像是一个无限循环。您可以只计算空格的数量,可能在
trim($subject)
之后,然后在退出或添加空格数量(可能是添加)之后再进行子字符串。您可以用一个示例演示它吗?谢谢您您应该检查($subject!==false)这是否是由于主题列表非常丰富(无论来自何处),或者
while
是一个无限循环(从不存在)。不清楚您想用
$subject
$position
做什么。你能简单地描述一下这对输出意味着什么吗?如果
$subjects
短于70个字符(在这种情况下,$subject!='')
时,你的代码会卡在
上。如果
$pos==false
,只返回截止点前最后一个空格可能是合理的。@TharangaNuwan是的,我编辑了代码以在文本被截止时返回“…”。如果
$pos==false
,只返回截止点前最后一个空格可能是合理的。@TharangaNuwan是,我编辑代码以在文本被截断时返回“…”。