XML数组以逗号分隔的列表

时间:2014-02-16 21:31:02

标签: php xml arrays wordpress

我有一个来自xml文件的标签数组列表,我使用xml文件向wordpress添加一些帖子。所以我需要将xml数组转换为逗号分隔列表,以便在我的帖子中导入标签。

这是一个xml文件示例

<tags>
   <tag>tag1</tag>
   <tag>tag2</tag>
   <tag>tag3</tag>
</tags>

所以,当我在.php文件中调用此文件并使用print_r获取输出时,我得到了这个

SimpleXMLElement Object ( 
    [tag] => Array ( 
         [0] => SimpleXMLElement Object ( )
         [1] => SimpleXMLElement Object ( )
         [2] => SimpleXMLElement Object ( )
         [3] => SimpleXMLElement Object ( )
    )
)

所以0 1 2 3是标签,值存储在SimpleXMLElement对象()中我读取它是正常的,在使用print_r时没有获取值,但我知道值在那里。

现在我需要将其转换为最后的列表以获得此结果

 $post_tags = tag1, tag2, tag3;

这样我就可以在我的函数中使用$ post_tags。

1 个答案:

答案 0 :(得分:1)

假设您的对象(您调用print_r()的对象是$xml),您将遍历$xml->tag并将每个子对象的内容追加到数组中。最后,将数组内爆为字符串。

// An array to hold it temporarily
$post_tags_arr = array();

foreach ($xml->tag as $t) {
  // Cast it to a string to get the text value back
  $post_tags_arr[] = (string)$t;
}
// Implode the array to a string
$post_tags = implode(', ', $post_tags_arr);
echo $post_tags;

您表示需要$post_tags的列表,但上面的语法对于您是否需要字符串或数组是不明确的。如果您想要一个数组,可以在$post_tags_arr之前的implode()中获得它。

如果您觉得自己很聪明,并且<tag>节点位于同一级别并且没有子节点,则可以将它们简单地转换为常规数组,这将导致它们的字符串值。

// Cast it to an array in one go:
$post_tags_arr = (array)$xml->tag;
print_r($post_tags_arr);

Array
(
    [0] => tag1
    [1] => tag2
    [2] => tag3
)