What kind of data is that?

时间:2017-12-20 作者:Danilo P. da Silva

我要用plug-in 在里面WordPress 调用RegistrationMagic. 我需要访问data 出于某种原因保存以供在前端进一步使用。

我在看tables 在里面MySQL 找到了datausers 就像这样:

a: 5: {
  i: 6;O: 8: "stdClass": 3: {
    s: 5: "label";s: 10: "First Name";s: 5: "value";s: 6: "Danilo";s: 4: "type";s: 5: "Fname";
  }i: 7;O: 8: "stdClass": 3: {
    s: 5: "label";s: 9: "Last Name";s: 5: "value";s: 5: "Teste";s: 4: "type";s: 5: "Lname";
  }i: 5;O: 8: "stdClass": 3: {
    s: 5: "label";s: 5: "Email";s: 5: "value";s: 26: "[email protected]";s: 4: "type";s: 5: "Email";
  }i: 8;O: 8: "stdClass": 3: {
    s: 5: "label";s: 7: "Website";s: 5: "value";s: 17: "http://teste.com/";s: 4: "type";s: 7: "Website";
  }i: 9;O: 8: "stdClass": 3: {
    s: 5: "label";s: 43: "Do you agree with our terms and conditions?";s: 5: "value";s: 2: "on";s: 4: "type";s: 5: "Terms";
  }
}
有人能帮我理解那是什么?是的JSON? 是否可以使用它,例如在循环中捕获或其他什么?

抱歉,如果这是一个转载,因为我总是在我的WordPress 数据库,但从未弄清楚是什么。

1 个回复
SO网友:David Sword

这是一个serialized 一串Here\'s a good description 它是什么:

PHP数组、对象或其他复杂的数据结构不能在运行的PHP脚本之外传输、存储或以其他方式使用。如果您想将如此复杂的数据结构保持在一次脚本运行之外,那么需要对其进行序列化。这只是意味着将结构放入一个“较低的公分母”,可以由PHP以外的事物处理,如数据库、文本文件、套接字。标准的PHP函数serialize就是一种表达这种东西的格式,它将数据结构序列化为PHP特有的字符串表示形式,并可以使用unserialize将其反转为PHP对象。不过还有许多其他格式,如JSON或XML。

因此,如果您有一个PHP数组、对象等,请说

$array = array(
    \'key value\' => array(
        \'more info\' => array(1,2,3)
    ),
    \'another key\' => array(
        \'and so on\' => \'<span>so on</span>\'
    )
);  
通过PHP,您可以使用serialize()unserialize() 把它变成一根绳子。您可以使用以下脚本查看自己:

$storeArray = serialize($array);

echo "<pre>".print_r($storeArray,true)."</pre>";

$restore = unserialize($storeArray);

echo "<pre>".print_r($restore,true)."</pre>";
UPDATE: 正如@TomJNowell提醒的那样(谢谢!):

如果您将对象或数组传递到API中进行保存,则WP会动态自动序列化和反序列化

使用Wordpress,例如使用Options API,将数组传递到add_option() 将数组另存为_options 桌子使用检索值get_option() 将自动为您取消对其的分级,并且获得的值将与您传入的原始$数组中添加的值相同:

add_option(\'my_array\', $array);

$my_array = get_option(\'my_array\');

echo "<pre>".print_r($my_array,true)."<pre>";

结束