有没有办法一步到位?

时间:2009-02-23 18:38:14

标签: php arrays

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

编辑:我意识到我应该更清楚。 $ CLIENT-> find总是返回一个对象数组,但我想要一行代码将数组(只有一个对象)转换成一个对象。

6 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

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

编辑:这是一个较少混淆的版本,您应该使用此代码:

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

但它们并不相同;第一个也适用于需要单个标量的地方(在函数的参数列表中),但第二个不会(list()返回void)。

答案 2 :(得分:0)

除非($CLIENT->find($options))[0]有效(IIRC我不认为它在PHP中有用,但我不认真对待它),我认为你不能压缩它。不过,我真的不认为这值得担心 - 如果你需要一个单语句表达式,那就写一个函数。

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

答案 3 :(得分:0)

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

不起作用?

答案 4 :(得分:0)

您考虑过method-chaining吗?

这将允许您只使用一行代码做很多事情。另请注意,对于更大和更长期的OO解决方案,这将更好。如果你只需要一个快速而肮脏的解决方案,也许只是一个返回数组中第一项的自定义函数。

帮助:如果有人可以为方法链找到更好的参考,请更新。

答案 5 :(得分:0)

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

如果find()没有返回任何内容,

$ client将成为您的对象或NULL。