-3

我有这样的情况:

function getData($key,$value){
   if($key==$value){
     echo 'Key-Value Matched';
       if($value=='foo'){
         $result = 'value is foo';
       }else{
         $result = 'value is bar';
       }
    }
return $result; 
}

 getData('bar','foo');
 echo $result;
 getData('foo','foo'); // Key-Value Matched
 echo $result;

如上面的代码,您可以看到我想要一个 php 函数的回显和返回值。但是从上述函数的执行来看, echo 部分正在正确执行,但 $result 不是来自该函数。如何实现上述函数的回声和返回值?

4

6 回答 6

1

您错过了在$key != $value. 您必须添加一个 else 块。像这样:

function getData($key,$value){
   if($key==$value){
     echo 'Key-Value Matched';
       if($value=='foo'){
         $result = 'value is foo';
       }else{
         $result = 'value is bar';
       }
    } else {
         $result = 'value is undefined';
    }
    return $result; 
}

此外,您还必须getData()在使用它之前存储它的返回值(如提到的@bwoebi):

$result = getData('bar','foo');
echo $result;
于 2013-04-06T12:46:16.760 回答
0

您的函数中有一个局部变量:$result,但这$result不是您的全局变量。

你必须这样做:

echo getdata('bar', 'foo');
echo getData('sss', 'sss');

等等...

于 2013-04-06T12:49:02.783 回答
0
function getData($key,$value){
    if($key===$value){
       echo 'Key-Value Matched';
       if($value=='foo'){
         $result = 'value is foo';
       }else{
         $result = 'value is bar';
       }
       return $result; 
    }else {
       echo 'Key-Value not matched';
    }
}

 echo getData('bar','foo');
 echo getData('foo','foo');
  • 必须使用“===”比较相同的字符串以获得最佳实践
  • 您的 $result 变量仅限于函数之外的函数
于 2013-04-06T12:49:21.740 回答
0

如果您真的希望getData函数更新$result变量(我不推荐),您可以使用global关键字将其声明为函数内部的全局变量

function getData($key, $value){
  global $result;

  if ($key == $value) {
    $result = 'Key-Value Matched';
    if ($value == 'foo') {
      $result = 'value is foo';
    } else {
      $result = 'value is bar';
    }
  }
  return $result; 
}

getData('bar','foo');
echo $result;         // Will print "value is foo"
getData('foo','foo');
echo $result;         // Will print "Key-Value matched"

但是,再一次,您不应该这样做(您的代码可能会变得非常混乱)。您只需要使用getDatareturn 并使用echo.

于 2013-04-06T12:58:44.413 回答
0

您必须先存储返回值:

 $result = getData('bar','foo');
于 2013-04-06T12:46:26.937 回答
-1

你不应该在函数中产生回声。更好的是将所有输出放在一个数组中,然后在浏览器上显示如下:

function getData($key,$value){
   $result = array();
   if($key==$value){
     $result[] = 'Key-Value Matched';
       if($value=='foo'){
         $result[] = 'value is foo';
       }else{
         $result[] = 'value is bar';
       }
    }
return $result; 
}

 $result = getData('bar','foo');
 foreach($result as $entry)
 {
   echo $entry."<br />"
 }
 $result = getData('foo','foo'); // Key-Value Matched
 foreach($result as $entry)
 {
   echo $entry."<br />"
 }
于 2013-04-06T12:50:11.477 回答