将XML数组解析为php变量

时间:2013-02-18 10:54:16

标签: php mysql xml arrays

我有一个在一个站点上自动生成的XML提要,我试图将其复制到另一个站点并将数据导入到mysql数据库中,但是,我有困难,因为我&#39 ;我不熟悉分解成多个元素的数组。

它是否以与标准数组相同的方式处理,或者每个必须单独处理?输出的XML示例包含在下面;

[str] => Array
    (
        [0] => 0
        [1] => USD
        [2] => USPS
        [3] => 4228547
        [4] => 486948677
        [5] => 7
        [6] => IndyGen3
        [7] => 1
        [8] => 8 units|8
        [9] => N/A
        [10] => 1
        [11] => Unlimited Refill
        [12] => Unlimited Refill
        [13] => www
        [14] => 1297081
        [15] => unitACTIVE4228547
        [16] => 2
        [17] => 0
        [18] => unit-486948677
        [19] => unit
        [20] => ACTIVE
        [21] => unit
        [22] => 1
        [23] => 1
        [24] => 47d 23h 24m
        [25] => 2013-02-15T19:35:15.153Z
    )

[float] => Array
    (
        [0] => 94.88
        [1] => 94.88
    )

[date] => Array
    (
        [0] => 2013-02-15T19:35:15.438Z
        [1] => 2013-02-15T19:33:14Z
        [2] => 2013-02-15T19:35:02Z
        [3] => 2013-04-04T19:00:00Z
    )

[arr] => Array
    (
        [0] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [name] => fm_ship_rules
                    )

                [str] => Array
                    (
                        [0] => 6,3,25.0,,2013-04-02T19:00:00Z
                        [1] => 6,7,11.95,,2013-03-22T19:00:00Z
                        [2] => 6,15,19.95,,2013-04-02T19:00:00Z
                        [3] => 6,16,19.95,,2013-04-02T19:00:00Z
                    )

            )

        [1] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [name] => fm_dm_rules_desc
                    )

                [str] => Array
                    (
                        [0] => USPS,USPS Priority, 25.0,,2013-04-02T19:00:00Z
                        [1] => USPS,USPS Two Day,11.95,,2013-03-22T19:00:00Z
                        [2] => USPS,USPS International Priority Puerto Rico,19.95,,2013-04-02T19:00:00Z
                        [3] => USPS,USPS International Priority Canada,19.95,,2013-04-02T19:00:00Z
                    )

            )

    )

[int] => Array
    (
        [0] => 8
        [1] => 8
        [2] => 1
    )

1 个答案:

答案 0 :(得分:1)

要访问多维数组中的信息(如上所示),请使用以下表示法。假设您的主阵列名为$arr

$sql = "INSERT INTO `mytable`
(
    `currency`,
    `postal_service`,
    `date`,
    `amount_1`,
    `amount_2`
) VALUES (
    '".$arr[str][1]."',
    '".$arr[str][2]."',
    '".$arr[date][0]."',
    '".$arr[float][0]."',
    '".$arr[float][1]."'
)";

这相当于:

$sql = "INSERT INTO `mytable`
(
    `currency`,
    `postal_service`,
    `date`,
    `amount_1`,
    `amount_2`
) VALUES (
    'USD',
    'USPS',
    '2013-02-15T19:35:15.438Z',
    '94.88',
    '94.88'
)";