【发布时间】:2009-02-23 18:38:13
【问题描述】:
$clients = $CLIENT->find($options); $client = $clients[0];
编辑:我意识到我应该更清楚。 $CLIENT->find 总是返回一个对象数组,但我想要一行代码将数组(只有 1 个对象)变成一个对象。
【问题讨论】:
$clients = $CLIENT->find($options); $client = $clients[0];
编辑:我意识到我应该更清楚。 $CLIENT->find 总是返回一个对象数组,但我想要一行代码将数组(只有 1 个对象)变成一个对象。
【问题讨论】:
$client = array_shift($CLIENT->find($options));
【讨论】:
$client = reset($CLIENT->find($options));
编辑:这是一个不太模糊的,你应该改用这个:
list($client) = $CLIENT->find($options);
但它们并不相同;第一个也适用于需要单个标量的地方(在函数的参数列表中),但第二个不行(list() 返回 void)。
【讨论】:
除非($CLIENT->find($options))[0] 有效(IIRC 我不认为它在 PHP 中有效,但不要相信我的话),我认为你不能浓缩它。不过,我真的认为这不值得担心 - 如果您需要一个单语句表达式,只需编写一个函数。
function fozzyle($options) {
$clients = $CLIENT->find($options);
return $clients[0];
}
【讨论】:
$client = $CLIENT->find($options)[0];
没有用?
【讨论】:
$client = array_shift($CLIENT->find($options));
$client 将是您的对象,如果 find() 没有返回任何内容,则为 NULL。
【讨论】:
你考虑过method-chaining吗?
这将使您只用一行代码就可以做很多事情。另请注意,这对于更大和更长期的 OO 解决方案会更好。如果您只需要一个快速而肮脏的解决方案,也许只是一个返回数组中第一项的自定义函数。
帮助:如果有人能找到更好的方法链参考,请更新。
【讨论】: