最近我也在想同样的问题,这是我想到的最好的解决方案。
首先,在函数中声明一个非常简单的类。php
class Object
{
var $data = array();
public function __set($name, $value)
{
$this->data[$name] = $value;
}
public function __get($name)
{
return $this->data[$name];
}
}
这是我们将用来存储所有内容的通用对象
接下来,我们将连接到SQL数据库并提取所需的所有数据。在本例中,我正在执行一个非常通用的查询,以选择数据库中的所有帖子,并附加它们的相关数据。如果您有一个较大的DB,您可能需要缩小此查询的范围,并在帖子中添加一些条件,例如添加:
"WHERE post.post_type = \'graph\'"
SQL查询,但我不确定您将结果缩小到什么范围,因此出于演示目的,我们将保持通用性。。。
global $wpdb;
$query = "SELECT post.id as post_id, meta.meta_key, meta.meta_value FROM wp_posts as post LEFT JOIN wp_postmeta as meta ON post.id = meta.post_id";
$result = $wpdb->get_results($query);
$last_post_id = -1;
$object_array = array();
foreach($result as $post)
{
if ($last_post_id != $post->post_id)
{
$instance = new Object;
$last_post_id = $post->post_id;
$instance->post_id = $post->post_id;
$instance->{$post->meta_key} = $post->meta_value;
$object_array[] = $instance;
}
else {
$meta_key = $post->meta_key;
$instance->$meta_key = $post->meta_value;
}
}
这样做的目的是从sql中获取相对“脏”的查询,并将其组织为您上面提到的格式。最后,尝试自己打印阵列
print_r($object_array);
您会注意到,您的变量嵌入到对象中的另一个数组“data”中,但由于我们在类定义中编写了getter和setter函数,您仍然可以直接调用变量名。
i、 e。
$meta_key = "my_key";
echo $object_array[0]->$meta_key;
希望这是有用的。