Php 如何在函数中保存回显值

Php 如何在函数中保存回显值,php,arrays,function,echo,Php,Arrays,Function,Echo,所以我想在一个函数中得到echo值,我想在函数外使用这个值。 这就是函数 function boyer_moore($pattern, $text) { $n = strlen($text); $m = strlen($pattern); $goodSuffixes = array(); $badCharacters = array(); goodSuffixes($pattern, $goodSuffixes); badCharacters($p

所以我想在一个函数中得到echo值,我想在函数外使用这个值。 这就是函数

function boyer_moore($pattern, $text)
{
   $n = strlen($text);
   $m = strlen($pattern);
   $goodSuffixes    = array();
   $badCharacters   = array();

   goodSuffixes($pattern, $goodSuffixes);
   badCharacters($pattern, $badCharacters);
   $j = 0;
   while ($j < $n - $m) {
      for ($i = $m - 1; $i >= 0 && $pattern[$i] == $text[$i + $j]; $i--);
      if ($i < 0) {
          echo $j;
          $j += $goodSuffixes[0];
      } else {
         $j += max($goodSuffixes[$i], $badCharacters[$text[$i + $j]] - $m + $i + 1);
      }
     }}
函数boyer_moore($pattern,$text)
{
$n=strlen($text);
$m=strlen($pattern);
$goodsuffix=array();
$badCharacters=array();
GoodSuffix($pattern,$GoodSuffix);
badCharacters($pattern$badCharacters);
$j=0;
而($j<$n-$m){
对于($i=$m-1;$i>=0&&$pattern[$i]==$text[$i+$j];$i--);
如果($i<0){
echo$j;
$j+=$goodsuffix[0];
}否则{
$j+=max($goodsuffix[$i],$badCharacters[$text[$i+$j]]-$m+$i+1);
}
}}
我想在函数外部使用值echo$j,并将其保存在变量中。 我还是初学者。 请帮帮我,谢谢你

我想累加所有echo$j值。
如果在循环之后使用return$j,则值将不同。谢谢您。

向标准输出回波打印。返回您的变量,或将其设置为类变量或全局变量-这样您就可以在函数中使用它了

您可能应该阅读一下如何使用函数及其值。 同时,保持代码原样,现在只需将
echo
替换为
return

然后您可以使用如下功能:

$my_pattern = //some pattern
$my_text = //some text
$my_outside_the_function_variable = boyer_moore($my_pattern, $my_text);

Hi在函数末尾使用
返回$j
,或将$j声明为全局变量。这样您就可以在页面的任何地方使用它

我不知道
$pattern
$text
应该是什么,但是要用您提供的信息回答您的问题,您需要从函数返回
$j
,然后在调用
boyer_moore()


但是
$j
值可以在循环中多次更改。您应该详细说明是需要获取最后一个
$j
值,还是需要将所有
$j
值累加到数组中,从函数返回数组
$j
是一个计数。您想返回最后的计数吗?将return$j添加到loop@RomanPerekhrest我想累积所有的$jvalues@Hery,可以将参数传递给函数(空数组),或使用
global
关键字填充函数内的全局数组
<?php

function boyer_moore($pattern, $text)
{
    $n = strlen($text);
    $m = strlen($pattern);
    $goodSuffixes = array();
    $badCharacters = array();

    goodSuffixes($pattern, $goodSuffixes);
    badCharacters($pattern, $badCharacters);
    $j = 0;
    while ($j < $n - $m) {
        for ($i = $m - 1; $i >= 0 && $pattern[$i] == $text[$i + $j]; $i--)
            ;
        if ($i < 0) {
            $j += $goodSuffixes[0];
        } else {
            $j += max($goodSuffixes[$i], $badCharacters[$text[$i + $j]] - $m + $i + 1);
        }
    }
    return $j;
}

...
...
$j = booyer_moore($pattern, $text);
echo $j;