返回三个变量来运行并检查它们

时间:2011-03-22 15:43:44

标签: php

您好,请帮我解决从函数中返回变量的问题 我从函数中返回三个变量

return $data 
return $success 
return $error

来自

$check  =$user->search($result);

现在根据收到的变量设置一些条件。我面临的问题是我怎样才能得到我收到的可变量的名称。我想通过名字而不是价值来接收它 喜欢

if($check == $data )

6 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

function myfunc() {
   ... do stuff ...
   $values = array($data, $success, $error);
   return($values);
}

$data = myfunc();
echo "Data is ", $data[0];

return只能返回一个东西,并且它“中止”该函数,因此你不能连续返回2个或更多 - 只有第一个会执行。因此,解决方法是返回一个包含所需值的容器。在这种情况下,我使用了一个数组,但是返回可以“返回”任何东西 - 如果你愿意,你可以传回一个对象。

答案 2 :(得分:3)

你不能以这种方式返回三个变量。永远不会返回$success$error,因为该函数在第一个return $data之后结束。

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

return array($data, $success, $error);

并称之为:

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

答案 3 :(得分:2)

我不认为原始海报试图返回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;
}

答案 4 :(得分:1)

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

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

try
{
    $data = $someObject->someFunction($some_parameter);
}
catch(Exception $e)
{
    // error handling code path
}

答案 5 :(得分:-1)

我对你的用例不太确定,但从你期望的变量看起来,我建议把它们变成参考参数:

function search($data, &$success, &$error) {

这是许多本机PHP函数所做的事情,也是像你这样的状态变量的适用习惯用法。缺点是总是必须使用额外参数调用该方法:

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

不解决你的问题(不能用你尝试过的简单方式解决)..how can i get the name of the vairable which i have received,但我不太清楚你的意思或意图。