2 回答
TA贡献1811条经验 获得超4个赞
您可以将构建数据的方式重写为更紧凑的格式,根据需要将每个数组定义转换为对象......
$filter = (object) [ "filters" => (object) [ 'team' => $queryObj['team'], 'skill' => $queryObj['skill'], 'division' => $queryObj['division'] ] ];
TA贡献1725条经验 获得超7个赞
如果将关联数组转换为对象,它就会成为stdClass具有匹配属性的对象。这是一个通用示例:
$arr = ['one' => 'foo', 'two' => 'bar', 'three' => 'meh'];
$obj = (object) $arr;
var_dump($obj);
这会给你:
object(stdClass)#2 (3) {
["one"] · string(3) "foo"
["two"] · string(3) "bar"
["three"] · string(3) "meh"
}
在您的情况下,如果您希望不必$queryObj一一命名您的键/值(如果过滤器列表不固定,因此不能进行硬编码,则这是必要的):
$filters = (object) $queryObj;
显然,源数组中的每个键/值对都成为对象中的属性/值对。如果您想省略某些特定值,请取消设置它们或使用array_intersect_key()等函数来仅转换所需的键。假设您$queryObject有一堆密钥,但您只想要示例中的密钥,您可以这样做:
$keymap = ['team', 'skill', 'division'];
$filters = (object) array_intersect_key(array_flip($keymap), $queryObject);
- 2 回答
- 0 关注
- 93 浏览
添加回答
举报