Php 从函数/方法返回多个值

Php 从函数/方法返回多个值,php,Php,我的类中有一个方法,我希望返回多个值: public function lockFields($lockFieldsDBs, $lockValueConstant) { if ($lockFieldsDBs == $lockValueConstant) { $lockFieldValue = 'readonly="readonly"'; $lockImage = 'image_url_goes_here'; } else {

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

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,我得到
未定义变量:lockImage


为什么不返回值?

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


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


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

return $lockField;
return $lockImage;
return ['lockField'=>$lockField, 'lockImage'=>$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

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

return $lockField;
return $lockImage;
return ['lockField'=>$lockField, 'lockImage'=>$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"

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

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

其他答案指出,您需要正确返回值。但是我认为您也无法正确获取返回值。

借助
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);

借助
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;
return $lockImage;
return ['lockField'=>$lockField, 'lockImage'=>$lockImage];


问题是您返回的变量形式不止一个。 你不能。您必须分配一个数组或列表来执行此任务,要执行此操作,请在结束函数之前使用以下任一代码:

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


我想你不能返回多个变量点1:如果条件为真,你就不能返回任何东西点2:如果你需要两个变量,你就不能返回两个变量,返回一个数组返回在if()之外,只是格式不好。可能重复我想你不能返回多个变量点1:如果条件为真,你不能返回任何内容点2:如果你需要两个变量,你不能返回两个变量,返回一个数组返回在if()之外,只是格式不好。或的重复可能会产生
,但这会变得有点复杂;)或者
yield
,但这会变得有点复杂;)大家好,我应该在上课的时候把列表列出来,还是在我叫全班的时候。谢谢。@ZYZ123ABC242526在类之外,就在您调用方法的地方。您好,我应该在类中的列表行还是在调用类时的列表行。谢谢。@ZYZ123ABC242526在类外,就在调用方法的地方。