我可以到达我要去的地方,但我想要最漂亮的道路.
是什么让我在这里研究运行一个函数的最佳方法,该函数返回一个$dom->getElementsByTagName()或多个对象的集合$pdo->query('SELECT itcher FROM scratches')- 然后 - 知道它只有一个结果 - 访问该结果.
我做了一些研究,但我想知道我知道所有的知识.
foreach或者任何迭代过多件事的东西从审美观点来看都是愚蠢的,因为我知道只有一个.将它投射到一个阵列感觉就像一个瑕疵,我想要开始我的代码.到目前为止我最喜欢的那个是$object->{'0'}因为它$object[0]与我发现的一样接近,但它似乎并不适用于所有情况.有什么东西比较漂亮吗?例如,foreach($key as $val)当它将$ key设置为$ val时,每次迭代到底做了什么?我可以自己做吗?
也许我不是在想象中正确地想象一个对象的想法,但是对于getElementsByTagName和mysql查询返回数组是不是更有意义?他们为什么不呢?
例如,当 foreach($key as $val) 将 $key 设置为 $val 时,它在每次迭代中到底在做什么?我可以自己做吗?
如果它确实是一个数组,您可以使用 获取第一个元素reset()。
如果它是一个Iterator(用于允许foreach访问对象)那么您应该能够使用$object->current();
我从来没有真正看过foreach- 然而,它的底层代码reset()似乎current()类似于foreach迭代开始时“做”的事情。
不幸的是,您引用的两个示例是内部类,并且根据文档内部类(属于语言或扩展的类)不遵循相同的规则:
实现此接口的内部(内置)类可以在 foreach 构造中使用,并且不需要实现 IteratorAggregate 或 Iterator。
也就是说,任何返回可迭代对象的用户类都foreach应该是一种Traversable类型(foreach需要什么),所以我相信current()应该按照您想要的方式工作。请注意,如果该对象实际上实现IteratorAggregate而不是Iterator,则必须使用getIterator()->current()。
但是,仍然可以使用您的两个示例 - 只需使用特定于这些返回类型的方法。对于 的情况getElementsByTagName(),您可以使用getElementsByTagName->item(0),对于 PDO 的情况,您可以使用query()->fetch()。