Skip to content

Instantly share code, notes, and snippets.

@hakre
Created August 9, 2015 14:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hakre/05df2b71e520ac0a09b3 to your computer and use it in GitHub Desktop.
Save hakre/05df2b71e520ac0a09b3 to your computer and use it in GitHub Desktop.
<?php
/**
* Example: SimpleXML tell apart a single element and a list of elements with a single element
*
* @link https://hakre.wordpress.com/2013/02/12/simplexml-type-cheatsheet/
* @libk http://stackoverflow.com/a/14829309/367456
*/
$buffer = <<<XML
<root>
<result>the one childre</result>
</root>
XML;
$xml = simplexml_load_string($buffer);
/**
* @param SimpleXMLElement $element
*/
function sxml_show_info(SimpleXMLElement $element)
{
$isSingleElement = $element[0] == $element;
$isListOfElements = $element[0] != $element
and $element->attributes() !== NULL;
printf(" Is single-element? - %s\n", $isSingleElement ? 'Yes' : 'No');
printf(" Is list-of-elements? - %s\n", $isListOfElements ? 'Yes' : 'No');
}
echo "For the single element:\n";
sxml_show_info($xml->result[0]);
echo "\n";
echo "For the list of elements with a single item:\n";
sxml_show_info($xml->result);
echo "\n";
@hakre
Copy link
Author

hakre commented Aug 9, 2015

Execute it on 3v4l.org, results were:

Output for 5.2.2 - 7.0.0beta3, hhvm-3.3.1 - 3.8.1

For the single element:
  Is single-element?   - Yes
  Is list-of-elements? - No

For the list of elements with a single item:
  Is single-element?   - No
  Is list-of-elements? - Yes

Do not use it with a PHP version before 5.2.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment