用PHP中的数组中的字符串替换SimpleXMLObject对象

时间:2016-01-23 20:02:13

标签: php arrays xml

我有一个数组,其中包含从Amazon API获取的信息并使用SimpleXML对其进行解析。这给了我一个如下所示的数组:

[
    [
        0 => SimpleXMLElement Object (0 => B00TU53O8Q)
    ], [
        0 => SimpleXMLElement Object (0 => B00TU53O8Q),
        1 => SimpleXMLElement Object (0 => B015K13HWQ)
    ], [
        0 => SimpleXMLElement Object (0 => B00TU53O8Q) 
    ], [
       ...
    ]
] 

现在,我想将此数组转换为更简化的格式,不再包含任何SimpleXML对象。

基本上,我只想要一个只包含它们代表的字符串的数组:

[
    0 => B00TU53O8Q,
    1 => B015K13HWQ,
    2 => B00TU53O8Q,
    1 => B00TU53O8Q
       ...
] 

然后我想将该数组拆分成一个二维数组,看起来像这样:

[
    0 => [
        0 => B00TU53O8Q
        1 => B00TU53O8Q
        2 => B015K13HWQ
        3 => B00TU53O8Q
        4 => B00TU53O8Q
    ],
    1 => [
        0 => B015K13HWQ
       ...
    ]
    ...
]

我不知道该怎么做。你能帮帮我吗?!

2 个答案:

答案 0 :(得分:1)

以下是处理输入的功能:

function translate($data, &$result) {
    if (is_array($data)) {
        foreach($data as $element) {
            translate($element, $result);
        }
    } else {
        $result[] = (string) $data; 
    }
}

这样称呼:

// some test data:
$data = array(
    array(
        new SimpleXMLElement("<test>B00TU53O8Q</test>")
    ),
    array(
        new SimpleXMLElement("<test>B00TU53O8Q</test>"),
        new SimpleXMLElement("<test>B015K13HWQ</test>")
    ),
    array(
        new SimpleXMLElement("<test>B00TU53O8Q</test>")
    ),
    array(
        new SimpleXMLElement("<test>B00TU53O8Q</test>"),
        new SimpleXMLElement("<test>B015K13HWQ</test>")
    )
);

$result = array();
translate($data, $result);

如果你想以5块的形式分解 $ result 数组,那么就这样进行:

$chunks = array();
while (count($result)) {
    $chuncks[] = array_slice($result, 0, 5);
    $result = array_slice($result, 5);
}

print_r ($chuncks);

输出,基于测试数据,给出2个块:

Array
(
    [0] => Array
        (
            [0] => B00TU53O8Q
            [1] => B00TU53O8Q
            [2] => B015K13HWQ
            [3] => B00TU53O8Q
            [4] => B00TU53O8Q
        )

    [1] => Array
        (
            [0] => B015K13HWQ
        )

)

答案 1 :(得分:0)

马上我认为你的if语句错了。如果要进行比较,应该是双==。基本上你设置$ asinValue等于&#39; Asin Not Found&#39;它会评估真实。看起来你似乎没有进入代码的其他部分。