我在 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 方法或序列化来更好地管理变量。
3 回答
当年话下
TA贡献1890条经验 获得超9个赞
对于 PHP >= 7.0.0 获取meta_value
并索引它meta_key
:
$result = array_column($data['checklist_content'], 'meta_value', 'meta_key');
然后:
echo $result['event_title']; //displays Soccer Encore
如果您需要保留其他属性:
$result = array_column($data['checklist_content'], null, 'meta_key');
然后:
echo $result['event_title']['meta_value']; //displays Soccer Encore
- 3 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消