加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 13:27:20 所属栏目:PHP教程 来源:网络整理
导读:我可以到达我要去的地方,但我想要最漂亮的道路. 让我在这里的是研究运行函数的最佳方法,该函数返回一组对象,如$dom- getElementsByTagName()或$pdo- query(‘SELECT itcher FROM scratches’)然后 – 知道它将会只有一个结果 – 访问该结果. 我做了一些研究,
我可以到达我要去的地方,但我想要最漂亮的道路.

让我在这里的是研究运行函数的最佳方法,该函数返回一组对象,如$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().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读