我的类中有一个方法,我想返回多个值:
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"
其他答案指出您需要正确返回值。但我认为您也没有正确获取回报。