You are here: Re: [PHP] is_array() doesn't work on DOM properties? « PHP « IT news, forums, messages
Re: [PHP] is_array() doesn't work on DOM properties?

Posted by Jochem Maas on 10/21/09 11:22

John Smith wrote:
> This is with simplexml_load_file(). Using an empty()
> check instead of is_array() does the trick (though -
> note to php hackers - I think is_array() SHOULD work).

ah simplexml, in that case is_array() shouldn't and won't
work because it's 'all' objects (although I can understand why it seems
like it should work!) - but the objects allow array(-like) iteration
of contained elements.

read this again very carefully:
http://be2.php.net/simplexml

note also that even values are actually objects that implement
the __toString() interface (although I'm not sure that is the
correct way to explain/name it) where by the object is automatically
cast to a string in a sensible way when used with echo/print ...
as the exmaples on the simplexml page show you have to cast manually
if you want to do other things with the string representation (like
using the actually value of the object as the test value of a switch
block.

here is some more reading material:
http://www.onlamp.com/pub/a/php/2004/01/15/simplexml.html

good luck

>
> John
>
>
> --- Jochem Maas <jochem@iamjochem.com> wrote:
>
>
>>John Smith wrote:
>>
>>>I'm trying to avoid error messages while iterating
>>>over DOM properties. e.g.
>>
>>
>>>if(is_array($dom->stuff->props)) {
>>
>>maybe you can get roudn the problem by saying?:
>>
>>if($dom->stuff->props) {
>>
>>or?:
>>
>>if(!empty($dom->stuff->props)) {
>>
>>
>>> foreach($dom->stuff->props as $prop) {
>>> ...
>>> }
>>>}
>>>
>>>It works without the is_array() check, but not
>>
>>with
>>
>>my guess is you'll find that $dom->stuff->props is
>>an object
>>which overloads the array accessor stuff...
>>basically it's implementing Iterator (or some other
>>SPL Interface)
>>
>>hard to tell though because you don't mention which
>>DOM
>>related extension you are using.
>>
>>
>>>it. I've done var_dumps and $dom->stuff->props is
>>>indeed an array. I've also tried using an
>>
>>intermediate
>>
>>>variable ($stuff=$dom->stuff) then checking that,
>>
>>but
>>
>>>that doesn't work either).
>>>
>>>John
>>>
>>>
>>>
>>>
>>
>>____________________________________________________
>>
>>>Start your day with Yahoo! - make it your home
>>
>>page
>>
>>>http://www.yahoo.com/r/hs
>>>
>>>
>>
>>
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация