如何回显一个字符串并从php中的相同函数返回一个值

时间:2013-04-06 12:44:01

标签: php function

我有这样的情况:

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和一个返回值。 但是从执行上述函数开始,echo部分正确执行,但$ result不是来自该函数。 如何从上面的函数中实现echo和返回值?

6 个答案:

答案 0 :(得分:1)

您错过了在$key != $value时初始化$ result。你必须添加一个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;

答案 1 :(得分:0)

您必须先存储返回值:

 $result = getData('bar','foo');

答案 2 :(得分:0)

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

你必须这样做:

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

依旧......

答案 3 :(得分: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');
  • 比较相同的STRINGS必须使用“===”进行最佳实践
  • 你的$ result变量是 仅限于功能之外的功能

答案 4 :(得分:0)

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

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" 返回并使用getData打印。

答案 5 :(得分:-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 />"
 }