Как получить значение определенного ключа из метода объекта, который возвращает массив - в одну строку кода? - PullRequest
1 голос
/ 07 декабря 2011

У меня есть экземпляр объекта, и я получаю от него какой-то метод:

$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) "" ["заблокирован"] ... и т.д.

Можно ли получить значение определенного ключа в одной строке кода?(Wihtout делает дополнительное значение, которое хранит этот массив) - например,

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

конечно, что выше не работает

Ответы [ 7 ]

3 голосов
/ 07 декабря 2011

Разыменование массивов из методов и функций не поддерживается в вашей версии PHP.Однако вы можете типизировать возвращаемое значение объекту и получить доступ к таким элементам, как члены объекта:

function getWebUserInfo($id)
{
   ...
   return (object) $array;
}
$obj->getWebUserInfo($id)->username;
2 голосов
/ 07 декабря 2011

Вы можете написать функцию или метод для этого:

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

или getWebUserInfoByKey ($ id, 'test')

http://codepad.org/4VBYwNWE

2 голосов
/ 07 декабря 2011

Попробуйте изменить функцию "getWebUserInfo", передав ей строковый параметр, который возвращает ключ, соответствующий этой строке.

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

};

Вы можете передать массив строк в «$ key» для возврата нескольких ключей, но вам нужно немного изменить свою функцию.

1 голос
/ 07 декабря 2011

Это нельзя сделать за один шаг, но что-то вроде этого может сработать:

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

...

get_array_key($object->getWebUserInfo($id), 'username');
1 голос
/ 07 декабря 2011

Вы не можете получить доступ к возвращаемым значениям массива напрямую, к сожалению, но вы должны создать временный массив для этого.LiMuBei ваши решения тоже не работают.

0 голосов
/ 07 декабря 2011

Это не похоже на массив PHP ... D:

Я не уверен, но вы можете попробовать это, я знаю, это две строки кода

$temp = $object->getWebUserInfo($id);
echo $temp["username"];
0 голосов
/ 07 декабря 2011

Не проверял это, но не

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

работа? Если метод возвращает массив, это должно быть возможно, я думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...