가변 개수의 하위 배열을 포함하는 다차원 배열이 있습니다.
각 하위 배열에는 숫자 키 및 값 목록이 들어 있습니다.
각 배열에있는 키만 들어있는 다차원 배열에 대한 "array_intersect_key"함수의 결과 인 별도의 배열이 있습니다.다차원 배열에서 동일한 색인 ID를 가진 항목의 항목을 합치십니까?
intersect_key 배열을 살펴보고 각 항목에 대해 다차원 배열 내의 일치하는 키와 관련된 값을 합친 다음 합계를 사용하여 intersect_key 배열의 키와 연관된 값을 바꿉니다. 동일한 색인 ID를 유지합니다.
각 배열의 키는 데이터베이스의 아티클 ID와 관련이 있으며 키와 관련된 값은 특정 단어가 해당 아티클에 나타나는 횟수입니다. 나는 각 기사와 관련된 모든 단어 수를 합산하여 관련성에 따라 주문할 수 있도록 노력하고 있습니다. 배열을 생성
코드 :
$arr_articles = array();
foreach($arr_words as $wordid => $word) {
$query = "SELECT articleid,wordcount FROM index_wordsearch AS iws WHERE iws.keywordid = '$wordid'";
$articlesearch = mysql_query($query);
if (!$articlesearch) {
die('Unable to search for articles matching the specified words: '.mysql_error());
} else {
$arr_ids = array();
while ($row = mysql_fetch_assoc($articlesearch)) {
$articleid = $row['articleid'];
$wordcount = $row['wordcount'];
$arr_ids["$articleid"] = "$wordcount";
}
$arr_aticles[] = $arr_ids;
}
}
$arr_matches = call_user_func_array('array_intersect_key',$arr_articles);
I했습니다 사용자 정의 함수로 밖으로 분기 다시 call_user_func_array()
호출을 사용하여이 문제를 해결하기 위해 노력하고 시작하지만,이 방법은 느낌이 좋지 않습니다.
서리가 내린, 즉 $의 arr_ids''의 각 하위 배열로 작동하지 않을 것입니다 특정 단어이며, 문서 ID와 해당 단어 카운트의 목록을 포함하는 배열입니다 그 단어. –
id와 단어 자체를 포함하는'$ arr_words '가 이미 있습니다. 이것은 사용자가 검색 한 단어 목록입니다 (단어 ID는 mysql 쿼리에서 채워집니다). –
아, foreach 줄에서'$ arr_words '를 놓쳤습니다, 미안 해요. 나는 대답에서 그것을 제거합니다. 그러나'$ arr_ids [$ articleid] + = $ wordcount; '라는 아이디어는 여전히 유효해야합니다. –