리소스 (사람)를 보유하고있는 응용 프로그램에서 고급 검색 필터를 만들려고합니다. 모든 다차원 배열에서 결과를 얻었습니다. 응용 프로그램 사용자는 직위, 기술, 작업 필드 및 국가를 검색 할 수 있습니다.알 수없는 키 수를 가진 다차원 배열의 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"
}
표시 할 수 있도록 배열의 모든 크기를 충족시키는 리소스를 알아야합니다. (이 예제에서는 단지 하나의 값을 가진 배열이 필요합니다 : 48). 나는 array_intersect
을 사용할 필요가 있다고 생각하지만 제대로 이해하지 못하는 것 같습니다.
사용 이동하는 방법처럼 보이지만 작동하지 않습니다 수
: [ 코드] if (! empty ($ realfilters)) { \t \t $ resourceIDsThatMatchAllCritera = $ realfilters [0]; 위한 \t ($ I = 1; $ i)는 카운트 ($ realfilters를 <; $ 난 ++) { \t \t \t $ resourceIDsThatMatchAllCritera = array_intersect_key ($ resourceIDsThatMatchAllCritera, $ realfilters [$ I를]); \t} \t \t var_dump ($ resourceIDsThatMatchAllCritera); // empty \t } [/ code] –
알았습니다. $ realfilters [0]이 작동하지 않습니다. $ realfilters [ "resourcesWithJobtitle"]로 변경하고 이제는 작동합니다! –
예.그냥 또한 그 것으로 나타났습니다 :) 더 나은 솔루션은 내 마음에 왔어요 (당신이 키를 모르면) : $ resourceIDsThatMatchAllCritera = array_shift ($ realfilters); foreach ($ realfilters를 $ filter로 사용) { $ resourceIDsThatMatchAllCritera = array_intersect ($ resourceIDsThatMatchAllCritera, $ filter); } –