$ clients = $ CLIENT-> find($ options); $ client = $ clients [0];有没有办法一步到位呢?
编辑:我意识到我应该更清楚。 $ CLIENT-> find总是返回一个对象数组,但我想要一行代码将数组(只有一个对象)转换为一个对象。
$ clients = $ CLIENT-> find($ options); $ client = $ clients [0];有没有办法一步到位呢?
编辑:我意识到我应该更清楚。 $ CLIENT-> find总是返回一个对象数组,但我想要一行代码将数组(只有一个对象)转换为一个对象。
$client = array_shift($CLIENT->find($options));
除非($CLIENT->find($options))[0]
工程(IIRC我不认为它在PHP中有效,但不要拿我的话),我不认为你可以压缩这一点。不过,我真的不认为值得担心 - 如果你需要一个单语句表达式,只需编写一个函数即可。
function fozzyle($options) {
$clients = $CLIENT->find($options);
return $clients[0];
}
$ client = $ CLIENT-> find($ options)[0];
不起作用?
直到现在,这就是要点。这将有望在PHP 6中得到解决。 – 2009-02-23 18:44:09
$client = reset($CLIENT->find($options));
编辑:这里有一个不太令人模糊,你应该用这个来代替:
list($client) = $CLIENT->find($options);
他们是不相同的,虽然;第一个也会在预期有单个标量的地方工作(在函数的参数列表中),但第二个不会(list()
返回void)。
这确实有用,但我个人建议不要使用它。问题中两行代码的目的比这个简明版本更加清晰。 – 2009-02-23 18:47:35
好点,我也会添加更好的。 – flussence 2009-02-23 19:07:01
你考虑过method-chaining吗?
这将允许您只用一行代码就可以做很多事情。还要注意,这对于更大和更长期的OO解决方案会更好。如果你只需要一个快速和肮脏的解决方案,可能只是一个返回数组中第一个项目的自定义函数。
帮助:如果有人可以找到一个更好的方法链参考,请更新此。
$ client = array_shift($ CLIENT-> find($ options));
$ client将是你的对象或NULL如果find()不返回任何东西。
谢谢,应该已经看到了这里一英里远 – fakingfantastic 2009-02-23 20:10:49