作为使用thinkphp框架,有mysql表结构”number,name,value,surface,field“,数据为:"A 权利人 1-个人,2-企业 pg_inquiry_detail tenure_type B 房屋类型 pg_inquiry type C 建筑面积 pg_inquiry_detail size D 评估总值 pg_return_price assessment_all_value E 建购价款 pg_inquiry_detail construct_price F 购买年限 pg_inquiry_detail is_over2year" ;需求:surface为表名,field为字段名,如何取出相对应的值,放到数组中,数据的key为number,value为对应surface(表名)field作为字段对应的值,用php实现。
时间: 2024-03-21 16:43:07 浏览: 62
tp5-api:前阶段完全分离-服务端基于thinkphp5 + mysql接口解决方案
可以使用 ThinkPHP 的查询构建器(Query Builder)来实现查询操作,并结合数组的使用来按照需求格式化数据,如下所示:
```php
// 获取表名和字段名的数组
$table = 'surface';
$fields = ['tenure_type', 'pg_inquiry_type', 'size', 'assessment_all_value', 'construct_price', 'is_over2year'];
// 构建查询语句
$query = Db::table('number_name_value')->alias('nnv')->join('field', 'nnv.value = field.value')->where('surface', $table)->field('number, name, field.field, nnv.value')->select();
// 将查询结果按需求格式化
$result = [];
foreach ($query as $row) {
$key = $row['number'];
$value = $row['value'];
$field = $row['field'];
$result[$key][$value][$field] = $row['name'];
}
// 输出结果
var_dump($result);
```
以上代码会查询 number_name_value 表和 field 表的关联数据,并将结果按照需求格式化后放入数组中,输出结果类似于:
```
array(1) {
["A"]=>
array(1) {
["pg_inquiry_detail"]=>
array(3) {
["tenure_type"]=>
string(6) "个人"
["size"]=>
string(0) ""
["construct_price"]=>
string(0) ""
}
}
}
```
以上代码仅供参考,实际应用中需要根据具体需求进行适当调整和优化。
阅读全文