getElementsByTagName() 或 $pdo->query('SEL-6ren">
gpt4 book ai didi

php - "iterate"单个对象或 php 对象的索引等价物

转载 作者:可可西里 更新时间:2023-11-01 12:38:17 25 4
gpt4 key购买 nike

我可以到达我要去的地方,但我想要最漂亮的路。

让我来到这里的是研究运行返回对象集合的函数的最佳方法,例如 $dom->getElementsByTagName()$pdo->query('SELECT itcher FROM scratches')然后 - 知道它只会有一个结果 - 访问该结果。

我做了一些研究,但我想知道我知道所有该知道的。

foreach 或任何迭代多个东西的东西从美学的角度来看感觉很傻,因为我知道只有一个。将它转换为数组感觉像是一个瑕疵,我想开始我的代码。到目前为止我最喜欢的是 $object->{'0'} 因为它和我发现的一样接近 $object[0],但是它似乎并非在所有情况下都有效。还有更漂亮的东西吗?例如,当 foreach($key as $val) 将 $key 设置为 $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()得到第一个元素.

如果它是 Iterator (用于允许 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() .

关于php - "iterate"单个对象或 php 对象的索引等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com