从函数/方法返回多个值


Returning multiple values from a function/method

我的类中有一个方法,我想返回多个值:

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

为什么不返回该值?

您可以在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);

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

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

return array($lockField, $lockImage);

在 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];
}

你不能在 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

$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"

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