Есть ли способ сделать это за один шаг? - PullRequest
2 голосов
/ 23 февраля 2009

$ clients = $ CLIENT-> find ($ options); $ client = $ clients [0];

РЕДАКТИРОВАТЬ: Я понял, я должен быть яснее. $ CLIENT-> find всегда возвращает массив объектов, но мне нужна одна строка кода, которая превращает массив (в котором будет только 1 объект) в просто объект.

Ответы [ 6 ]

7 голосов
/ 23 февраля 2009
$client = array_shift($CLIENT->find($options));
4 голосов
/ 23 февраля 2009
$client = reset($CLIENT->find($options));

Редактировать: Вот менее запутанный, вы, вероятно, должны использовать это вместо:

list($client) = $CLIENT->find($options);

Они не идентичны; первый также будет работать в местах, где ожидается один скаляр (внутри списка параметров функции), но второй не будет (list() возвращает void).

0 голосов
/ 23 февраля 2009

$ client = array_shift ($ CLIENT-> find ($ options));

$ client будет вашим объектом или NULL, если find () ничего не возвращает.

0 голосов
/ 23 февраля 2009

Рассматривали ли вы метод цепочки ?

Это позволит вам многое сделать только с одной строкой кода. Также обратите внимание, что это было бы лучше для более крупных и долгосрочных ОО-решений. Если вам просто нужно быстрое и грязное решение, возможно, просто пользовательская функция, которая возвращает первый элемент в массиве.

Справка: Если кто-то может найти лучшую ссылку для цепочки методов, обновите ее.

0 голосов
/ 23 февраля 2009

$ client = $ CLIENT-> find ($ options) [0];

не работает?

0 голосов
/ 23 февраля 2009

Если ($CLIENT->find($options))[0] не работает (IIRC Я не думаю, что это работает в PHP, но не верьте мне на слово), я не думаю, что вы можете сократить это. Я действительно не думаю, что стоит беспокоиться об этом - если вам нужно выражение из одного оператора, просто напишите функцию.

function fozzyle($options) {
    $clients = $CLIENT->find($options);
    return $clients[0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...