从函数/方法返回多个值

时间:2015-02-03 14:48:58

标签: php

我的课程中有一个方法,我希望返回多个值:

public function lockFields($lockFieldsDBs, $lockValueConstant) {
    if ($lockFieldsDBs == $lockValueConstant) {
        $lockFieldValue = 'readonly="readonly"';
        $lockImage      = 'image_url_goes_here';
    }
    else {
        $lockFieldValue = null;
        $lockImage = null;
    }

    return $lockField;
    return $lockImage;
}


...........


$lockFieldsDBs = 'OK';
$lockValueConstant = 'OK';

$formHandler->lockFields($lockFieldsDBs, $lockValue);

尝试打印出这样的值:echo $lockImage;时,我收到Undefined variable: lockImage

为什么不返回该值?

5 个答案:

答案 0 :(得分:4)

您可以借助list()语言结构从函数返回两个或多个值:

public function lockFields($lockFieldsDBs, $lockValueConstant) {
    if($lockFieldsDBs == $lockValueConstant){
        $lockFieldValue = 'readonly="readonly"';
        $lockImage = 'image_url_goes_here';
    }
    else {
        $lockFieldValue = null;
        $lockImage = null;
    }

    return [$lockField, $lockImage];
}



list($lockField, $lockImage) = $formHandler->lockFields($lockFieldsDBs, $lockValue);

答案 1 :(得分:1)

问题是你正在返回多个函数的变量形式。 你不能。你必须指定一个数组或一个列表来完成这项工作,为了在你的函数结束之前使用这些代码之一:

return ['lockField'=>$lockField, 'lockImage'=>$lockImage];

return array($lockField, $lockImage);

答案 2 :(得分:0)

您只能在PHP函数中返回一个变量。如果需要返回两个,则需要使用数组(或对象)。

public function lockFields($lockFieldsDBs,$lockValueConstant)
{
    if($lockFieldsDBs == $lockValueConstant){
        $lockFieldValue = 'readonly="readonly"';
        $lockImage = 'image_url_goes_here';
    } else {
        $lockFieldValue = null;
        $lockImage = null;
    }
    return ['lockField'=>$lockField, 'lockImage'=>$lockImage];
}

答案 3 :(得分:0)

你不能在php函数中返回两个变量:

return $lockField;
return $lockImage;

您可以将它们放在一个数组中:

return array($lockField, $lockImage);

使用它:

$response = $formHandler->lockFields($lockFieldsDB,$lockValue)
echo $response[0]; // this is $lockField in your function 
echo $response[1]; // this is $lockImage in your function

答案 4 :(得分:0)

$ lockImage是方法内部的变量。为什么你认为它将在全球范围内推出?要明确:

public function lockFields($lockFieldsDBs,$lockValueConstant){
  $lockImage = "some value";
  return $lockImage;
}

$formHandler->lockFields($lockFieldsDB,$lockValue);
echo $lockImage; // variable $lockImage does not exists

不起作用。它应该是:

public function lockFields($lockFieldsDBs,$lockValueConstant){
  $lockImage = "some value";
  return $lockImage;
}

$lockImage = $formHandler->lockFields($lockFieldsDB,$lockValue);
echo $lockImage; // "some value"

其他答案指出您需要正确返回值。但我认为你也没有正确获取回报。