【问题标题】:PHP / CodeIgniter get array of unique XML node namesPHP / CodeIgniter 获取唯一 XML 节点名称的数组
【发布时间】:2013-07-17 14:30:14
【问题描述】:

我有一个这样的 XML

<items>
  <item>
    <name>A</name>
    <phone>1111111</phone>
  </item>
  <item>
    <name>B</name>
    <phone>2222222</phone>
  </item>
</items>

如何将唯一的 nodeNames 放入数组中,例如 array("name","phone");

【问题讨论】:

标签: php codeigniter


【解决方案1】:
$xml = '<items>
  <item>
    <name>A</name>
    <phone>1111111</phone>
  </item>
  <item>
    <name>B</name>
    <phone>2222222</phone>
  </item>
</items>';
$obj = new SimpleXMLElement($xml);
$arr = json_decode(json_encode($obj), TRUE);
$arr = $arr['item'];
var_dump($arr);

输出:

 Array
(
    [0] => Array
        (
            [name] => A
            [phone] => 1111111
        )

    [1] => Array
        (
            [name] => B
            [phone] => 2222222
        )
)

如果你想获取数组键,你可以这样做:

$keys = array_keys($arr[0]);
var_dump($keys);

输出:

Array
(
    [0] => name
    [1] => phone
)

【讨论】:

  • "我怎样才能将唯一的 nodeNames 放入一个数组中,例如 array("name","phone");"。我问这个是因为它需要是动态的,无论其他节点被命名或有多少,我需要一个唯一的低级节点名数组,以我提供的格式
  • array_keys($arr[0]) 返回array('name', 'phone')。是这个意思吗?
  • 是的! array_keys 符合我的要求,如果您想将其放在单独的答案中,我会将其标记为正确
  • 只是出于好奇,如果您不知道它们保存在名为“item”的标记节点中,这可能吗?
  • @ejfrancis - 与$keys = array_keys($arr);$keys[0] = 'item';。所以你可以通过这种方式找到它。
猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多