$ clients = $ CLIENT-> find($ options); $ client = $ clients [0];
编辑:我意识到我应该更清楚。 $ CLIENT-> find总是返回一个对象数组,但我想要一行代码将数组(只有一个对象)转换成一个对象。答案 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。