2009-02-23 2 views
2

$ clients = $ CLIENT-> find ($ options); $ client = $ clients [0];Есть ли способ сделать это за один шаг?

EDIT: Я осознал, что должен быть яснее. $ CLIENT-> find всегда возвращает массив объектов, но мне нужна одна строка кода, которая превращает массив (который будет иметь только один объект) только в объект.

ответ

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

спасибо, должно было видеть, что это приближается за милю – fakingfantastic

0

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

function fozzyle($options) { 
    $clients = $CLIENT->find($options); 
    return $clients[0]; 
} 
0

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

не работает?

+0

Пока что, это точка. Это, надеюсь, будет исправлено в PHP 6. –

4
$client = reset($CLIENT->find($options)); 

Edit: Вот менее запутанных один, вы, вероятно, следует использовать вместо этого:

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

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

+0

Это действительно работает, но я бы лично посоветовал не использовать его. Цель двух строк кода в вопросе намного понятнее, чем эта сокращенная версия. –

+0

Хорошо, я добавлю еще лучшую. – flussence

0

Вы считаете method-chaining?

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

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

+0

Это потрясающее решение, но да, я искал быстро и грязно. – fakingfantastic

0

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

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

Смежные вопросы