我的课程中有一个方法,我希望返回多个值:
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
。
为什么不返回该值?
答案 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"
其他答案指出您需要正确返回值。但我认为你也没有正确获取回报。