将 wpdb sql 数组转换为 php 数组

Posted

技术标签:

【中文标题】将 wpdb sql 数组转换为 php 数组【英文标题】:Convert wpdb sql array into php array 【发布时间】:2014-03-27 08:59:43 【问题描述】:

通过 sql 查询,我从我的 wpdb 中获取特定行的元值。在 sql 中它是一个数组,但它在 php 中作为字符串输出,如下所示:

a:1:i:0;a:2:i:0;s:10:”02/17/2014″;i:1;s:10:”Thom Stark”;

如何将其转换为 php 数组,以便访问数组 2 的索引中的值?我的查询如下所示:

$tabledata = $wpdb->get_row("SELECT meta_value FROM ".$prefix."frm_item_metas WHERE field_id='$fid' AND item_id='$eid'");
$data = $tabledata->meta_value;
echo $data;

outputs:  a:1:i:0;a:2:i:0;s:10:”02/17/2014″;i:1;s:10:”Thom Stark”;

【问题讨论】:

【参考方案1】:

您可以使用unserialize

$string = 'a:1:i:0;a:2:i:0;s:10:”02/17/2014″;i:1;s:10:”Thom Stark”;';
$array = unserialize($string);

【讨论】:

太棒了。现在正在尝试。谢谢。 我正在尝试这个:` $tabledata = $wpdb->get_row("SELECT meta_value FROM ".$prefix."frm_item_metas WHERE field_id='$fid' AND item_id='$eid'" ); $data = $tabledata->meta_value; $array = json_decode($data); $内容= $数据; foreach ($array as $a) $content .= $a.""; ` 但是数组没有被输出。 @Thom:你可以试试unserialize 吗?我已经更新了答案【参考方案2】:

它是一个序列化的数组,所以你需要使用反序列化将它转换回数组

$string = 'a:1:i:0;a:2:i:0;s:10:"02/17/2014";i:1;s:10:"Thom Stark";';
$array = unserialize(trim($string));

print_r($array);

注意:你有 它应该是 "

【讨论】:

引号只是***的智能引用。 或者 WordPress,来自前端。否则它们是正确的。 不,可能是你复制的 word press 永远不会用 存储,他们只是对数组进行序列化()。 我认为我必须接受 nauphal 的回答,因为他建议在您回答前一分钟取消序列化。 :( 抱歉!讨厌这些情况。 嘿,没关系!你不必为此感到抱歉!!最重要的是,无论您选择哪个答案,它都对您有用 :)

以上是关于将 wpdb sql 数组转换为 php 数组的主要内容,如果未能解决你的问题,请参考以下文章

通过 $wpdb 获取所有帖子的元值

使用 wpdb prepare 安全地收集带有“join”的“where”子句数组

如何使用 php 数组将 sql 查询结果转换为数据透视表?

php sql条件参数为数组

PHP/jQuery - 如何将多维 PHP 数组转换为 JSON 字符串?

PHP/MySql 用数组搜索数组