“迭代”单个对象或php对象的索引等价物

前端之家收集整理的这篇文章主要介绍了“迭代”单个对象或php对象的索引等价物前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以到达我要去的地方,但我想要最漂亮的道路.

让我在这里的是研究运行函数的最佳方法,该函数返回一组对象,如$dom-> getElementsByTagName()或$pdo-> query(‘SELECT itcher FROM scratches’)然后 – 知道它将会只有一个结果 – 访问该结果.

我做了一些研究,但我想知道我知道所有的知识.

foreach或任何迭代过多事的东西从审美观点来看都是愚蠢的,因为我知道只有一个.将它投射到一个阵列感觉就像一个瑕疵,我想要开始我的代码.到目前为止我最喜欢的是$object-> {‘0’},因为它与我发现的$object [0]一样接近,但它似乎并不适用于所有情况.有什么东西比较漂亮吗?例如,在将$key设置为$val时,foreach($key as $val)在每次迭代时做了什么?我可以自己做吗?

也许我不是在想象中正确地想象一个对象的想法,但是getElementsByTagName和mysql查询返回数组会不会更有意义?他们为什么不呢?

For instance,what exactly is foreach($key as $val) doing on each iteration when it sets a $key to $val? Can I do that myself?

如果它确实是一个数组,你可以使用reset()获得第一个元素.

如果它是迭代器(用于允许foreach访问对象),那么你应该能够使用$object-> current();

我从来没有真正看过foreach的底层代码 – 但是reset()和current()似乎类似于foreach在迭代开始时会“做”的东西.

不幸的是,您引用的两个示例是内部类,而according to the docs内部类(作为语言或扩展的一部分的类)不遵循相同的规则:

Internal (built-in) classes that implement this interface can be used in a foreach construct and do not need to implement IteratorAggregate or Iterator.

也就是说,任何返回可以由foreach迭代的对象的用户类都应该是Traversable类型(foreach需要的),所以我相信current()应该按照你想要的方式工作.请注意,如果对象实际上实现了IteratorAggregate而不是Iterator,则必须使用getIterator() – > current().

但是,仍然可以使用两个示例 – 只使用特定于返回类型的方法.在getElementsByTagName()的情况下,您可以使用getElementsByTagName-> item(0),在PDO的情况下,您可以使用query() – > fetch().

原文链接:https://www.f2er.com/php/137446.html

猜你在找的PHP相关文章