xml - PHP convert empty array to string -


i have function xml2array parses xml file array. when have empty value in xml file function converts array( ) empty array.

so < test >< /test > becomes [test]=>array(), want empty string "".

does know how edit function below:

<?php     function xml2array($contents, $get_attributes = 1, $priority = 'tag') {      $parser = xml_parser_create('');     xml_parser_set_option($parser, xml_option_target_encoding, "utf-8");     xml_parser_set_option($parser, xml_option_case_folding, 0);     xml_parser_set_option($parser, xml_option_skip_white, 1);     xml_parse_into_struct($parser, trim($contents), $xml_values);     xml_parser_free($parser);     if (!$xml_values)         return; //hmm...     $xml_array = array ();     $parents = array ();     $opened_tags = array ();     $arr = array ();     $current = & $xml_array;     $repeated_tag_index = array ();      foreach ($xml_values $data)     {         unset ($attributes, $value);         extract($data);         $result = array ();         $attributes_data = array ();         if (isset ($value))         {             if ($priority == 'tag')                 $result = $value;             else                 $result['value'] = $value;         }         if (isset ($attributes) , $get_attributes)         {             foreach ($attributes $attr => $val)             {                 if($attr == 'xsi:type') continue;                 if($attr == 'xsi:nil') continue;                  if ($priority == 'tag')                     $attributes_data[$attr] = $val;                 else                     $result['attr'][$attr] = $val; //set attributes in array called 'attr'             }         }         if ($type == "open")         {              $parent[$level -1] = & $current;             if (!is_array($current) or (!in_array($tag, array_keys($current))))             {                 $current[$tag] = $result;                 if ($attributes_data)                     $current[$tag . '_attr'] = $attributes_data;                 $repeated_tag_index[$tag . '_' . $level] = 1;                 $current = & $current[$tag];             }             else             {                 if (isset ($current[$tag][0]))                 {                     $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;                     $repeated_tag_index[$tag . '_' . $level]++;                 }                 else                 {                      $current[$tag] = array (                         $current[$tag],                         $result                     );                      $repeated_tag_index[$tag . '_' . $level] = 2;                     if (isset ($current[$tag . '_attr']))                     {                         $current[$tag]['0_attr'] = $current[$tag . '_attr'];                         unset ($current[$tag . '_attr']);                     }                 }                 $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;                 $current = & $current[$tag][$last_item_index];             }         }         elseif ($type == "complete")         {             if (!isset ($current[$tag]))             {                 $current[$tag] = $result;                 $repeated_tag_index[$tag . '_' . $level] = 1;                 if ($priority == 'tag' , $attributes_data)                     $current[$tag . '_attr'] = $attributes_data;             }             else             {                 if (isset ($current[$tag][0]) , is_array($current[$tag]))                 {                     $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;                     if ($priority == 'tag' , $get_attributes , $attributes_data)                     {                         $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;                     }                     $repeated_tag_index[$tag . '_' . $level]++;                 }                 else                 {                     $current[$tag] = array (                         $current[$tag],                         $result                     );                      $repeated_tag_index[$tag . '_' . $level] = 1;                     if ($priority == 'tag' , $get_attributes)                     {                         if (isset ($current[$tag . '_attr']))                         {                              $current[$tag]['0_attr'] = $current[$tag . '_attr'];                             unset ($current[$tag . '_attr']);                         }                         if ($attributes_data)                         {                             $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;                         }                     }                     $repeated_tag_index[$tag . '_' . $level]++; //0 , 1 index taken                 }             }         }         elseif ($type == 'close')         {             $current = & $parent[$level -1];         }     }      return ($xml_array); } 

?>

just check source array using empty: http://php.net/empty , return "" empty() returned true. add @ begining of function:

if( empty($myarray) ) {    return ''; } 

Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -