我有一个来自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。
答案 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
)