Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将三个变量返回函数并检查它们_Php - Fatal编程技术网

Php 将三个变量返回函数并检查它们

Php 将三个变量返回函数并检查它们,php,Php,您好,请帮助我从函数返回变量 我从函数返回三个变量,如下所示 return $data return $success return $error 从 $check =$user->search($result); 现在根据收到的变量设置一些条件。我面临的问题是,如何获得收到的变量的名称。我想按名称而不是价值来接收它 像 一个函数不能返回多个变量。我建议制作一个数组,然后返回它 return array('data' => $data, 'success' => $s

您好,请帮助我从函数返回变量 我从函数返回三个变量,如下所示

return $data 
return $success 
return $error

$check  =$user->search($result);
现在根据收到的变量设置一些条件。我面临的问题是,如何获得收到的变量的名称。我想按名称而不是价值来接收它 像


一个函数不能返回多个变量。我建议制作一个数组,然后返回它

return array('data' => $data, 'success' => $success, 'error' => $error);

return
只能返回一个东西,它会“中止”函数,因此一行中不能有两个或多个返回,只有第一个返回才会执行。因此,解决方法是返回一个包含所有所需值的容器。在本例中,我使用了一个数组,但return可以“返回”任何东西-如果愿意,可以将对象传回。

这样就不能返回三个变量
$success
$error
将永远不会返回,因为函数在第一次
返回$data
后结束

如果要返回三个值,可以这样做:

return array($data, $success, $error);
list($data, $success, $error) = $user->search($result);
try
{
    $data = $someObject->someFunction($some_parameter);
}
catch(Exception $e)
{
    // error handling code path
}
这样称呼它:

return array($data, $success, $error);
list($data, $success, $error) = $user->search($result);
try
{
    $data = $someObject->someFunction($some_parameter);
}
catch(Exception $e)
{
    // error handling code path
}

我不太确定您的用例,但从您期望的变量的外观来看,我建议将它们转换为参考参数:

function search($data, &$success, &$error) {
这是许多本机PHP函数所做的,也是一种适用于像您这样的状态变量的习惯用法。缺点是,您必须始终使用额外的参数调用该方法,然后:

$check  = $user->search($result, $success, $error);

没有解决您的问题(无法以您尝试过的简单方式解决)
。我如何获得我收到的VARABLE的名称,但我不太确定您的意思或意图。

我不认为原始海报试图返回3个变量,而是具有多个控制路径,并根据某些条件返回不同的结果

public function search($r) {
    ...
    return array('data'    => $data);
    ...
    return array('success' => $success);
    ...
    return array('error'   => $error);
}

$check = $user->search($result);
switch(key($check)) {
    case 'data':
        // handle data
    break;

    case 'success':
        // handle success
    break;

    case 'error':
        // handle error
    break;
}

干净的解决方案是在成功时返回一个数据集(例如数组),如果发生错误则抛出一个异常。使用此方法将消除对变量$success的需要

当您调用以这种方式实现的方法时,您可以这样做:

return array($data, $success, $error);
list($data, $success, $error) = $user->search($result);
try
{
    $data = $someObject->someFunction($some_parameter);
}
catch(Exception $e)
{
    // error handling code path
}

和的可能重复。使用Python,您可以返回一个元组,并使用sane语法分配其元素;)