1

Ι 需要一个函数来反序列化特定字段的数据以导出到 XML 文件。

我的序列化字段是

<B2B_Sale_price><![CDATA[a:1:{i:6704;a:2:{s:13:"regular_price";s:8:"17.33871";s:10:"sale_price";s:5:"13.77";}}]]></B2B_Sale_price>

我只想导出sales_price。

此功能非常适合 csv 导出

function data_deserialize_csv($value){$output = '';$data = unserialize($value);print_r($data);$data = reset($data);return $data['sale_price'];}

但是对于 xml 返回错误 PHP Error: reset() Expects parameter 1 to be array, bool given on line 15 of the Functions Editor

4

1 回答 1

1

您可以使用此处的代码版本从 XML 转换为 JSON,然后转换为数组。

function data_deserialize_xml($value)
{
    // Parse as XML, treating the CDATA as content
    $xml = simplexml_load_string($value, null, LIBXML_NOCDATA);
    
    // Convert back and forth
    $json = json_encode($xml);
    $array = json_decode($json, TRUE);
    
    // Grab the first item
    $value = reset($array);
    
    // Same code as before
    $data = unserialize($value);
    print_r($data);
    $data = reset($data);
    return $data['sale_price'];
}
于 2020-11-25T23:03:24.570 回答