【发布时间】:2016-02-20 19:22:06
【问题描述】:
首先,感谢您的关注!
运行查询后,我得到如下结果:
--------------------------------------
|post_id| meta_key | meta_value |
--------------------------------------
| 1 | name | jeff |
--------------------------------------
| 1 | email | x@mail.com |
--------------------------------------
| 1 | color | blue |
--------------------------------------
| 2 | name | mary |
--------------------------------------
| 2 | email | y@mail.com |
--------------------------------------
| 2 | color | pink |
--------------------------------------
数组
array(6)
{
[0]=> object(stdClass)#448 (3)
{
["post_id"] => string(1) "1"
["meta_key"] => string(4) "name"
["meta_value"] => string(4) "jeff"
}
[1]=> object(stdClass)#449 (3)
{
["post_id"] => string(1) "1"
["meta_key"] => string(4) "email"
["meta_value"] => string(10) "x@mail.com"
}
[2]=> object(stdClass)#450 (3)
{
["post_id"] => string(1) "1"
["meta_key"] => string(5) "color"
["meta_value"] => string(4) "blue"
}
[3]=> object(stdClass)#448 (3)
{
["post_id"] => string(1) "2"
["meta_key"] => string(4) "name"
["meta_value"] => string(4) "mary"
}
[4]=> object(stdClass)#449 (3)
{
["post_id"] => string(1) "2"
["meta_key"] => string(4) "email"
["meta_value"] => string(10) "y@mail.com"
}
[5]=> object(stdClass)#450 (3)
{
["post_id"] => string(1) "2"
["meta_key"] => string(5) "color"
["meta_value"] => string(4) "pink"
}
}
嗯,我有 3 个标签和 3 个值的 1 个 ID。使用 PHP,我需要知道如何执行 foreach 或 each 来打印这样的数据:
---------------------------------------------------
|post_id| name | email | color |
---------------------------------------------------
| 1 | jeff | x@mail.com | blue |
---------------------------------------------------
| 2 | mary | y@mail.com | pink |
---------------------------------------------------
现在,在 Kostas Mitsarakis 的帮助下,我有一个代码,但就我而言,此代码返回 NULL 值。
代码:
global $wpdb;
$meta_value = interested_get_meta( 'interested_email' );
$results = $wpdb->get_results(
'SELECT post_id, meta_key, meta_value
FROM wp_postmeta
WHERE post_id
IN ( SELECT post_id
FROM wp_postmeta
WHERE meta_value = "'.$meta_value.'"
)', OBJECT
);
$data = array();
$result = array($results);
foreach($result as $key => $value) {
if (!in_array($value['post_id'], $data)) {
$data[$value['post_id']]['post_id'] = $value['post_id'];
}
if ($value['meta_key'] != 'post_id') {
$data[$value['post_id']][$value['meta_key']] = $value['meta_value'];
}
}
var_dump($data);
var_dump 的返回值:
array(1) { [""]=> array(2) { ["post_id"]=> NULL [""]=> NULL } }
【问题讨论】:
-
你能显示查询吗?我认为如果您使用 SQL 获得权限结果会更好。
-
执行
GROUP BY id和 ORDER BY,然后将其设置在 HTML 格式的表格中。 -
您可以运行并以 3 为模,但更好的解决方案是修改查询
-
注释掉 // $data = array();然后代替: $results = $wpdb->get_results... 写: $data = $wpdb->get_results... 因为您使用 $data 在这种情况下为空。
-
Kostas,在进行了建议的更改后,我将相同的数组放入了一个没有重大更改的新数组中。也许我做的不对。插入有问题的数组是我的查询得到的。也许这有助于展示我手头的东西。
标签: php wordpress foreach each