将序列化数据转换为数组

时间:2014-05-12 06:43:08

标签: php mysql wordpress

我从数据库表中提取了序列化数据,我想在数组中显示它。 a:7:{i:0;a:2:{s:8: »field_id »;i:6;s:10: »user_value »;s:4: »jack »;}i:1;a:2:{s:8: »field_id »;i:7;s:10: »user_value »;s:5: »david »;}i:2;a:2:{s:8: »field_id »;i:8;s:10: »user_value »;s:5: »45587″;}i:3;a:2:{s:8: »field_id »;i:9;s:10: »user_value »;s:3: »447″;}i:4;a:2:{s:8: »field_id »;i:10;s:10: »user_value »;s:3: »115″;}i:5;a:2:{s:8: »field_id »;i:11;s:10: »user_value »;s:6: »Agadir »;}i:6;a:2:{s:8: »field_id »;i:13;s:10: »user_value »;s:0: » »;}} 更新:谢谢大家,我尝试反序列化但它不起作用。我喜欢某个地方,反序列化不适用于':;,“而且我应该使用uncode函数。我的问题是如何在同一时间完成所有这些:uncode&gt;&gt; unserialize&gt;&gt;存储在表或数组中< / p>

4 个答案:

答案 0 :(得分:2)

$x=unserialize($serialized_data)

答案 1 :(得分:0)

Wordpress系统非常整洁function用于处理序列化数据,它被称为 maybe_unserialize()

该功能只有在序列化时才会反序列化值,对序列化数据的检查会自动完成,这样就可以节省一些时间。

<?php maybe_unserialize( $original ) ?>

参数

$original - 字符串,如果需要,可能是必需的,也可能是非序列化的原始字符串。

返回值

非序列化数据可以是任何类型。

答案 2 :(得分:0)

我找到了我需要的东西

$json_data = [];
foreach ($subs as $sub_id => $sub) {
    $submission_data = array(); 
    $data = unserialize($sub['data']);
    $user_values = array();
    foreach ($data as $key => $value) {
        $user_values[$value['field_id']] = $value['user_value'];
    }

    foreach ( $fields as $field_id => $field ) {
        $user_value = $user_values[$field['id']];
        if ($user_value == '') { 
            continue;
        }

        $submission_data[] = array(
            "label" => $field['data']['label'],
            "value" => $user_value,
            "type" => $field['type']
        );
    }

    $json_data[] = array(
            "id" => $sub['id'],
            "items" => array_values($submission_data)
        );

    echo json_encode(array_values($json_data), JSON_PRETTY_PRINT);
}`

来自link

答案 3 :(得分:0)

以下代码在我的情况下起作用,我已经通过jquery序列化,然后将其作为字符串分配给输入并提交表单。然后在PHP上获取数据。

yourdomain:yourport/secure