php - Is there a better way to loop though this XML list -
here's loop
function list($input) { //i'm sure there's better way of doing this... $list = simplexml_load_string($input); foreach($list->nation $nation){ foreach($nation->region $region){ $temp['url']= (string)$region['url']; $temp['name'] = (string)$region['name']; $temp['nation'] = (string)$nation['name']; $out['regions'][] = $temp; } $temp['url'] = (string)$nation['url']; $temp['name'] = (string)$nation['name']; unset($temp['nation']); $out['nations'][] = $temp; } return $out; } sample data:
<?xml version="1.0"?> <regions> <nation url="canada" name="canada" > <region url="abbotsford" name="abbotsford" /> <region url="barrie" name="barrie" /> <region url="brantford" name="brantford" /> <region url="calgary" name="calgary" /> <region url="charlottetown" name="charlottetown" /> </nation> <nation url="ireland" name="ireland"> <region url="cork" name="cork"/> <region url="dublin" name="dublin"/> <region url="galway" name="galway"/> <region url="limerick" name="limerick"/> <region url="waterford" name="waterford"/> </nation> thanks help
function list($input) { $list = simplexml_load_string($input); // guarantee fixed output format $out = array('regions' => array(), 'nations' => array()); foreach ($list->nation $nation){ foreach ($nation->region $region){ $out['regions'][] = array( 'url' => $region['url'], 'name' => $region['name'], 'nation' => $nation['name'] ); } $out['nations'][] = array( 'url' => $nation['url'], 'name' => $nation['name'] ); } return $out; }
Comments
Post a Comment