FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » ArrayAccess interface, Traversable interface and foreach
Show: Today's Messages :: Unread Messages :: Polls :: Message Navigator
| Subscribe to topic | Bookmark topic 
Switch to threaded view of this topic Create a new topic Submit Reply
ArrayAccess interface, Traversable interface and foreach [message #185987] Fri, 23 May 2014 14:22 Go to next message
kurtk(at)pobox(dot)com is currently offline  kurtk(at)pobox(dot)com
Messages: 10
Registered: May 2012
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
The documentation for ArrayAccess (at http://www.php.net/manual/en/class.arrayaccess.php) doesn't show it implementing Traversable. Nevertheless, you can still use any class you write that implements ArrayAccess in a foreach loop.

This seems like an oversight in the documentation--unless I am missing something?
Message by Jerry Stuckle is ignored  [reveal message]  [reveal all messages by Jerry Stuckle]  [stop ignoring this user] Go to previous messageGo to next message
Message by Christoph Michael Bec is ignored  [reveal message]  [reveal all messages by Christoph Michael Bec]  [stop ignoring this user] Go to previous messageGo to next message
Message by Jerry Stuckle is ignored  [reveal message]  [reveal all messages by Jerry Stuckle]  [stop ignoring this user] Go to previous messageGo to next message
Message by Christoph Michael Bec is ignored  [reveal message]  [reveal all messages by Christoph Michael Bec]  [stop ignoring this user] Go to previous messageGo to next message
Re: ArrayAccess interface, Traversable interface and foreach [message #185996 is a reply to message #185989] Tue, 27 May 2014 14:59 Go to previous messageGo to next message
Adam Harvey is currently offline  Adam Harvey
Messages: 25
Registered: September 2010
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
On Sat, 24 May 2014 12:05:02 +0200, Christoph Michael Becker wrote:

> kurtk(at)pobox(dot)com wrote:
>
>> This seems like an oversight in the documentation--unless I am missing
>> something?
>
> You can use any object (whether it is an instance of a class that
> implements Traversable or not) in a foreach loop, see
> <http://www.php.net/manual/en/control-structures.foreach.php>.

Yep, this is why objects that implement ArrayAccess still work with
foreach without implementing Traversable.

ArrayAccess and Traversable are technically different things: Traversable
provides a way to control iteration, whereas ArrayAccess is only for
array-style dereferencing via $object['key']. In practice, classes that
need to imitate arrays will need to implement both (probably by extending
a class such as ArrayObject that implements both interfaces).

Adam
Re: ArrayAccess interface, Traversable interface and foreach [message #186028 is a reply to message #185989] Mon, 02 June 2014 10:15 Go to previous message
kurtk(at)pobox(dot)com is currently offline  kurtk(at)pobox(dot)com
Messages: 10
Registered: May 2012
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
> You can use any object (whether it is an instance of a class that
>
> implements Traversable or not) in a foreach loop, see
> <http://www.php.net/manual/en/control-structures.foreach.php>.

Thanks Christoph. I didn't realize that any object can be used in a foreach loop, and that it doesn't need to implement an interface that derives from Traversable.
Quick Reply
Formatting Tools:   
  Switch to threaded view of this topic Create a new topic
Previous Topic: Re: mysqli fetch_assoc() straight to array
Next Topic: Pthread with amazon sns
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Tue Apr 16 20:13:13 EDT 2024

Total time taken to generate the page: 0.04215 seconds