【问题标题】:Store array within a string as an array将字符串中的数组存储为数组
【发布时间】:2017-10-06 14:53:46
【问题描述】:

wp_posts WordPress 表中,我为帖子(自定义帖子类型)存储了一行,该行在post_content 列中存储了以下内容:

Array
(
    [test_price] => 39.00
    [test_elegibility] => Eligible
    [test_confirmation] => confirmed
    [test_id] => DUA6A44THQH7U
    ...
)

当我通过以下方式查询表时:

$query = $wpdb->get_results( 'SELECT * FROM wp_posts where post_type = "custom_post_type"' );

foreach($query as $q) {
    $content = $q->post_content;
    var_dump($content);
}

上面每个变量的var_dump结果显然如下:

string(1369) string(1311) 

以此类推,因为 post_content 字段目前基本上保存为字符串以供我使用,它包含我要提取的数组。

我知道我可以去掉/过滤掉括号、方括号等,然后循环遍历每个实例,从而很容易地直接从 post_content 字段值创建一个关联数组,这很好。

我的问题是,我是否错过了一个技巧,我可以通过简单地将字符串分配给变量来立即将字符串分配为数组?例如,使用上面的:

foreach($query as $q) {
    $content = $q->post_content;
    var_dump($content);
}

结果是每个var_dump 应该理想地打印出来:

array(2) { 'te' => string(4) "werg" 'wreg' => string(6) "werefg" }

注意 - 字段值将只包含数组,没有其他附加或附加...

【问题讨论】:

  • 如果我理解您的问题,您可以序列化数组,同时将数据保存在 post_content 字段中,然后在渲染时将其反序列化。但最好的选择是使用postmeta 表来满足您的自定义要求。

标签: php wordpress


【解决方案1】:

看起来您可能想要使用 PHP serialize 方法,该方法将返回您的数组的字符串表示形式,然后您可以将其存储在数据库中。 然后您可以使用unserialize 再次从字符串中取出数据。

如果您迫切需要一种将var_dump 输出重新解析为数组的方法,您可以查看此答案https://stackoverflow.com/a/3531880/7326037,但它并不漂亮。

【讨论】:

  • 感谢您的回答 - 最后我确实使用了序列化,以及其他一些东西!
猜你喜欢
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2016-10-16
  • 2017-11-11
相关资源
最近更新 更多