我試圖在持有資源(人)的應用程序中進行高級搜索過濾器。我在1維多維數組中獲得了所有結果。應用程序的用戶可以搜索人員職位名稱,技能,工作領域和國家。PHP Array_intersect多維數組與密鑰數量未知
我已經完成了查找符合用戶標準的人員的部分。這些結果存儲在多維數組中。如果用戶是找人帶一個職位和特殊技能的返回值的特定資源是這樣的:
$realfilters = array(2) {
["resourcesWithJobtitle"]=> array(6) {
[0]=> string(1) "1"
[1]=> string(2) "48"
[2]=> string(2) "88"
}
["resourcesWithSkill"]=> array(9) {
[0]=> string(1) "4"
[1]=> string(1) "8"
[2]=> string(1) "48"
[3]=> string(2) "50"
}
當用戶也尋找一個工作現場,這是添加到結果:
["resourcesWithWorkfield"]=> array(3) {
[0]=> string(2) "48"
[1]=> string(2) "96"
[2]=> string(2) "97"
}
我需要知道哪些資源滿足數組的所有維度,因此我可以顯示它們。 (所以在這個例子中,我需要一個只有1個值的數組:48)。我想我需要使用array_intersect
,但似乎無法做到。
好像走的路,但不工作: [代碼] if(!empty($ realfilters)) { \t \t $ resourceIDsThatMatchAllCritera = $ realfilters [0]; \t爲($ I = 1; $ I <計數($ realfilters); $ I ++) \t { \t \t $ resourceIDsThatMatchAllCritera = array_intersect_key($ resourceIDsThatMatchAllCritera,$ realfilters [$ I]); \t} \t \t var_dump($ resourceIDsThatMatchAllCritera); //空\t } [/ code] –
明白了。 $ realfilters [0]不起作用。將其更改爲$ realfilters [「resourcesWithJobtitle」],現在它可以工作! –
是的。剛剛注意到,也是:) 但更好的解決方案剛剛出現在我的腦海(如果你不知道的關鍵): $ resourceIDsThatMatchAllCritera = array_shift($ realfilters); foreach($ realfilters as $ filter){ $ resourceIDsThatMatchAllCritera = array_intersect($ resourceIDsThatMatchAllCritera,$ filter); } –