2009-02-23 6 views
2

$ clients = $ CLIENT-> find ($ options); $ client = $ clients [0];Existe-t-il un moyen de le faire en une seule étape?

EDIT: J'ai réalisé que je devrais être plus clair. Le $ CLIENT-> find renvoie toujours un tableau d'objets, mais je veux une ligne de code qui transforme le tableau (qui aura seulement 1 objet) en seulement un objet.

Répondre

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

merci, aurait dû voir cela à venir un mile – fakingfantastic

0

À moins que ($CLIENT->find($options))[0] fonctionne (IIRC je ne pense pas que ce soit en PHP, mais ne me croyez pas sur parole), je ne pense pas que vous pouvez condenser cela. Cependant, je ne pense vraiment pas que cela vaille la peine de s'inquiéter - si vous avez besoin d'une expression à une seule instruction, écrivez simplement une fonction.

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

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

ne fonctionne pas?

+0

Pas jusqu'à maintenant, c'est le point. Cela sera peut-être corrigé en PHP 6. –

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

Edit: Voici un moins obfuscation, vous devriez probablement utiliser cette place:

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

Ils ne sont pas identiques si; le premier fonctionnera également dans les endroits où un seul scalaire est attendu (à l'intérieur de la liste de paramètres d'une fonction) mais le second ne le fera pas (list() renvoie void).

+0

Cela fonctionne, mais personnellement, je déconseille de l'utiliser. Le but des deux lignes de code dans la question est beaucoup plus clair que cette version condensée. –

+0

Bon point, je vais en ajouter un meilleur aussi. – flussence

0

Avez-vous pris en compte method-chaining?

Cela vous permettra de faire beaucoup avec une seule ligne de code. Notez également que cela serait mieux pour les solutions OO plus grandes et à plus long terme. Si vous avez juste besoin d'une solution rapide et sale, peut-être juste une fonction personnalisée qui renvoie le premier élément dans un tableau.

Aide: Si quelqu'un peut trouver une meilleure référence pour le chaînage de méthodes, veuillez le mettre à jour.

+0

c'est une solution géniale, mais oui, je cherchais rapide et sale. – fakingfantastic

0

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

$ client sera votre objet ou NULL si find() ne renvoie rien.

Questions connexes