PHP:如何使用函数来回显结果或将其保存在变量中(部分工作)

PHP: How to use function to either echo result or to save it in a variable (partially working)

我是 PHP 的新手,希望有人能帮助我。

我有以下函数,我可以向其传递一个 itemID(唯一整数),然后它将用于 return 来自先前创建的数组的相应转换(这只是最终的部分)。

PHP函数(保存在我的头文件中):

function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            echo $val["trans"];
        }
    }
}

只要我按如下方式在 HTML 页面上的任意位置引用该函数,它就会按预期工作。

HTML 页面上的回显结果(有效):

echo fetchTransMain($trans, someID);

但是,在某些情况下,我需要将结果保存为变量,而不是将结果回显到页面。我尝试了以下操作,但这仍然在屏幕顶部的某个地方回响。

将结果保存到变量而不是回显它(不起作用):

$someVariable = fetchTransMain($trans, someID);

有人能告诉我如何使用此函数来回显结果(工作部分)并将其另存为变量(不是工作部分)- 根据需要 ?

非常感谢, 麦克

Can someone tell me how I can use this function both to echo the result (working part) and to save it to a variable alternatively.

print_r这样的一些函数有一个可选参数来指示它是否应该return这个值,或者只是回应它,所以这是一个公平的问题。这是 print_r 的函数签名:

mixed print_r ( mixed $expression [, bool $return = false ] )

如果您也想要此功能,请尝试传入可选的第三个参数以指示您是否希望函数回显或 return 一个值。

function fetchTransMain($trans, $itemID, $echo = false){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            if(!$echo) { 
               echo $val["trans"];   // Echo the value
            } else {
               return $val["trans"]; // Return the value
            }
        }
    }
}

编辑: 仅 return 值并在函数外回显它要简单得多,但我的回答旨在忠实于您的确切问题。

只是 return 函数中的值而不是回显它:

function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            return $val["trans"];
        }
    }
}

然后,当你想打印它时,你可以这样做:

echo fetchTransMain($trans, someID);

否则你会:

$someVariable = fetchTransMain($trans, someID);

    function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            $tobePrint.= $val["trans"];
        }
    }
      return $tobePrint;
}

并将其用于:


   print  fetchTransMain($trans, $itemID)


   $variable = fetchTransMain($trans, $itemID)

最灵活和可扩展的方法是使用输出缓冲函数http://php.net/manual/en/ref.outcontrol.php

function fetchTransMain($trans, $itemID, $echo){
     $str="";
     ob_start();
     foreach($trans as $key => $val){
         if($val["ID"] == $itemID){
               echo $val["trans"];   // Echo the value
          }
     }

     $str = ob_get_buffer();
     if($echo) ob_end_flush();
     else ob_end();
     return $str;
}

上面的代码没有测试功能或语法的正确性,但它应该按原样工作或非常相似。

您需要 return 来自函数的值。 假设你可能只有一个可能的匹配试试这个。

function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            return $val["trans"];
        }
    }
}

然后调用你的函数

$someVariable = fetchTransMain($trans, $someID);

然后回显 returned 值。

echo $someVariable;