2014-12-18 2 views
1

많은 mysql 데이터베이스를 병합해야합니다. 어레이의 양은 다를 수 있습니다. 나는 DB에 데이터를 직렬화하고 나가는 중 그것을 unserializing입니다. 내가 엉망이 된 곳에서는 array_merge을 사용하려고하지만 데이터를 올바르게 가져 오는 방법을 알지 못합니다. 예를 들어mysql/php - while 문에서 mysql 출력의 다중 배열을 병합하십시오.

나는

$sql_get_votes_data = "SELECT * FROM algo_users WHERE data LIKE '%$movie_id%'"; 
$result_get_votes_data = mysql_query($sql_get_votes_data); 
$final_array = array(); 
while($row_get_votes_data = mysql_fetch_array($result_get_votes_data)) { 
    $final_array[] = unserialize($row_get_votes_data['data']); 
} 

궁극적으로이 같은 독특한 병합을 할 수 있어야합니다.

array_unique(array_merge($final_array1,$final_array2), SORT_REGULAR); 

하지만 array_merge에 통과하기 위해 별도의 변수로 각 배열을 배치해야하기 때문에 나는 MySQL의 통화에서 그렇게하는 방법을 모르겠습니다.

도움이 될 것입니다.

+0

조인 등의 쿼리 내에서 병합 할 수 있습니까? – isa

답변

1

루프가 진행되는 동안 왜 모든 새 배열을 병합하지 않습니까?

$mergedArray=array(); 
while($row_get_votes_data = mysql_fetch_array($result_get_votes_data)) { 
    $final_array = unserialize($row_get_votes_data['data']); 
    $mergedArray=array_merge($mergedArray,$final_array); 
} 
array_unique($mergedArray, SORT_REGULAR); 

또는 당신은 당신의 개인 배열을 추적해야하는 경우 :

$mergedArray=array(); 
$i=0; 
while($row_get_votes_data = mysql_fetch_array($result_get_votes_data)) { 
    $final_array[$i] = unserialize($row_get_votes_data['data']); 
    $mergedArray=array_merge($mergedArray,$final_array[$i]); 
    $i++ 
} 
array_unique($mergedArray, SORT_REGULAR); 

편집 : 내가 처음 당신은 그냥 모든 배열이 하나의 배열에 병합 할 싶어 이해했다. 위의 편집 된 답변은 이제 내가 지금 이해하고있는대로 중복 된 항목을 제거합니다.

+0

게다가 더 이상 mysql_ * 함수를 사용하지 마십시오 (안전하지 않고 더 이상 지원되지 않습니다). mysqli_ * 함수 나 pdo 라이브러리 문서를 보라. – fpierrat

0

예 : 이를 위해 call_user_func_array을 사용하십시오.

<?php 
$myarrs = array(); 

$result = call_user_func_array('array_merge', $myarrs); var_dump($result); 

$myarrs[] = array(1,2,3); 
$result = call_user_func_array('array_merge', $myarrs); var_dump($result); 

$myarrs[] = array(4,5,6); 
$result = call_user_func_array('array_merge', $myarrs); var_dump($result); 

$myarrs[] = array(7,8,9); 
$result = call_user_func_array('array_merge', $myarrs); var_dump($result); 

하지만 어쩌면 데이터베이스를 재구성하기 위해 더 많은으로 가능하고 정렬/필터링/병합을 할 수있는 데이터베이스 오 테이블에 직렬화 된 배열하지만 하나의 필드를 넣어 없습니다.