2 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以將構(gòu)建數(shù)據(jù)的方式重寫為更緊湊的格式,根據(jù)需要將每個(gè)數(shù)組定義轉(zhuǎn)換為對(duì)象......
$filter = (object) [ "filters" => (object) [ 'team' => $queryObj['team'], 'skill' => $queryObj['skill'], 'division' => $queryObj['division'] ] ];

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果將關(guān)聯(lián)數(shù)組轉(zhuǎn)換為對(duì)象,它就會(huì)成為stdClass具有匹配屬性的對(duì)象。這是一個(gè)通用示例:
$arr = ['one' => 'foo', 'two' => 'bar', 'three' => 'meh'];
$obj = (object) $arr;
var_dump($obj);
這會(huì)給你:
object(stdClass)#2 (3) {
["one"] · string(3) "foo"
["two"] · string(3) "bar"
["three"] · string(3) "meh"
}
在您的情況下,如果您希望不必$queryObj一一命名您的鍵/值(如果過濾器列表不固定,因此不能進(jìn)行硬編碼,則這是必要的):
$filters = (object) $queryObj;
顯然,源數(shù)組中的每個(gè)鍵/值對(duì)都成為對(duì)象中的屬性/值對(duì)。如果您想省略某些特定值,請(qǐng)取消設(shè)置它們或使用array_intersect_key()等函數(shù)來僅轉(zhuǎn)換所需的鍵。假設(shè)您$queryObject有一堆密鑰,但您只想要示例中的密鑰,您可以這樣做:
$keymap = ['team', 'skill', 'division'];
$filters = (object) array_intersect_key(array_flip($keymap), $queryObject);
- 2 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報(bào)