如何从object的方法中获取某个键的值,该方法返回数组 - 在一行代码中?

时间:2011-12-07 14:49:43

标签: php arrays object

我有一个对象实例,我从他身上找到了一些方法:

$object->getWebUserInfo($id)

它返回一些典型的数组:

  

array(29){[“username”] => string(7)“quardas”[“password”] => string(32)“PASS”[“id”] => string(2)“19”[“internalKey”] => string(2)“19”[“name”] => string(0)“”[“fullname”] => string(0)“”[“role”] => string(1)“0”[“email”] => string(17)“quardas@somemail.com”[“phone”] => string(0)“”[“mobilephone”] => string(0)“”[“blocked”] ...... etc

是否可以在一个行代码中获得某个密钥值? (除了保留这个数组的附加值) - 例如

$object->getWebUserInfo($id)->{'username'}

当然上面的说法不起作用

7 个答案:

答案 0 :(得分:3)

您的PHP版本不支持

Dereferencing of arrays from methods and functions。但是,您可以将返回值强制转换为对象并访问对象成员之类的项目:

function getWebUserInfo($id)
{
   ...
   return (object) $array;
}
$obj->getWebUserInfo($id)->username;

答案 1 :(得分:2)

尝试修改“getWebUserInfo”函数并向其传递一个字符串参数,该参数返回与此字符串对应的键。

function getWebUserInfo($id,$key="") {
    ...;
    $array = ...;
    if($key != "") {
        return $array[$key];
    } else {
        return $array;
    }

};

你可以在“$ key”中传递一个字符串数组来返回多个键,但是你必须再修改一下你的函数。

答案 2 :(得分:2)

您可以为此编写函数或方法:

function getKey($a, $key)
{
    return $a[$key];
}
echo getKey(getWebUserInfo(), 'test');

或获取WebUserInfoByKey($ id,'test')

http://codepad.org/4VBYwNWE

答案 3 :(得分:1)

您无法直接访问返回的数组值,但您必须为此创建临时数组。 LiMuBei你的解决方案也不起作用。

答案 4 :(得分:1)

这不能一步完成,但这样的事情可能有效:

function get_array_key($array, $key) {
    return (isset($array[$key])) ? $array[$key] : false;
}

...

get_array_key($object->getWebUserInfo($id), 'username');

答案 5 :(得分:0)

没有测试过,但没有

$object->getWebUserInfo($id)["username"]

工作?如果方法返回一个数组,我认为这应该是可能的。

答案 6 :(得分:0)

这看起来不像PHP数组...... D:

我不确定,但你可能想尝试这个,我知道,这是两行代码

$temp = $object->getWebUserInfo($id);
echo $temp["username"];