我有这样的情况:
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和返回值?
答案 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');
答案 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 />"
}