2 回答

TA貢獻1811條經驗 獲得超4個贊
您可以將構建數據的方式重寫為更緊湊的格式,根據需要將每個數組定義轉換為對象......
$filter = (object) [ "filters" => (object) [ 'team' => $queryObj['team'], 'skill' => $queryObj['skill'], 'division' => $queryObj['division'] ] ];

TA貢獻1725條經驗 獲得超8個贊
如果將關聯數組轉換為對象,它就會成為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 關注
- 131 瀏覽
添加回答
舉報