我在 PHP 5.6 上使用带有控制器和路由的 MVC 框架。
我正在尝试从数据库中定义一些 PHP 变量。
+---------+---------+-------------+---------------+
| meta_id | post_id | meta_key | meta_value |
+---------+---------+-------------+---------------+
| 3506 | 147 | event_flag | 1 |
| 3507 | 147 | event_year | 2019 |
| 3508 | 147 | event_title | Soccer Encore |
+---------+---------+-------------+---------------+
我在这里调用查询。
// Controller:
public function __construct()
{
parent::__construct();
$this->_data['checklist_content'] = $this->_models['wp_stream_settings']->getChecklistMeta(147);
}
这是查询:
// Model:
function getChecklistMeta($item_id){ // passed $item_id = 147
$sql = '
SELECT *
FROM '.PREFIX.'wp_postmeta
where post_id = '.$item_id.' and meta_key IN ( "event_flag", "event_year", "event_title" );
';
return $this->db->select($sql, array(':ID' => $item_id));
}
此查询将提供所需的所有信息并将变量放入 stdClass 对象中:
// Data
[checklist_content] => Array
(
[0] => stdClass Object
(
[meta_id] => 3506
[post_id] => 147
[meta_key] => event_flag
[meta_value] => 1
)
[1] => stdClass Object
(
[meta_id] => 3507
[post_id] => 147
[meta_key] => event_year
[meta_value] => 2019
)
但我无法按照我的意愿管理阵列:
echo $data['checklist_content']->{'event_title'};
我尝试使用 array_search:
print_r(array_search("event_title",$this->_data['checklist_content']));
无济于事。
我可以修改 SQL 查询以获得更易于管理的 stdClass 对象,或者以 JSON 格式重新映射它,或者其他。
这样我就可以像这样轻松地显示值“Soccer Encore”:
echo $data['checklist_content']->{'event_title'};
现在我被迫获得这样的变量:
echo $data['checklist_content'][2]->{'meta_value'}; // Outputs "Soccer Encore"
我愿意重新设计查询,甚至可以使用 JSON 方法或序列化来更好地管理变量。
当年话下
梵蒂冈之花