2014-04-15 6 views
0

두 배열을 병합하려고합니다. 다른 방법으로 여러 번 해봤지만 작동하지 않습니다. 이유가 무엇인지 모르겠지만 모양이있는 경우 솔루션을 얻을 수 있습니다. !! !!아무것도 작동하지 않을 때 두 배열을 병합하는 방법?

PHP FYLE는

<?php 
    require_once('php-sdk/facebook.php'); 
    include("conex.phtml"); 

    $config = array(
    'appId' => 'xxxxxxxxxx', 
    'secret' => 'xxxxxxxxxxxxx', 
); 
    $facebook = new Facebook($config); 
    $user_id = $facebook->getUser(); 

    global $output;$output = array();  
    global $result;$result = array();  
    global $ret_obj_place;$ret_obj_place = array();  
    global $ret_obj_page2;$ret_obj_page2 = array();  
    global $pic_square;$link=Conectarse(); 

    if($user_id) { 
    $user_id=$_GET['user_id']; 
    $page_id=$_GET['page_id']; 
    $result=mysql_query("SELECT * FROM places WHERE page_id=" . $page_id, $link); 
    if ($result){} else { 
try { 
     $fqlPlace = 'SELECT page_id,name,description,geometry,latitude,longitude,checkin_count,display_subtext FROM place WHERE page_id=' . $page_id; 
     $ret_obj_place = $facebook->api(array(
            'method' => 'fql.query', 
            'query' => $fqlPlace, 
           )); 

     ///////////////////////////////////////////////////////////   

     $fqlPage = 'SELECT pic_square, pic_big, fan_count, type FROM page WHERE page_id=' . $page_id; 
     $ret_obj_page2 = $facebook->api(array(
            'method' => 'fql.query', 
            'query' => $fqlPage, 
           )); 
    **//$output = array_merge($ret_obj_place, $ret_obj_page2);   

     $union = array_merge($ret_obj_place, $ret_obj_page2); 
     $union = array_map('serialize', $union); 

     global $data = array(); 

     foreach (array_unique($union) as $v) { 
      $data[] = unserialize($v);** 
     } 
     //$union = array_merge($ret_obj_place, $ret_obj_page2); 
     //$output = array_values(array_map("unserialize", array_unique(array_map("serialize", $union))));    

     displayResult($result, $output, $data);  
      ///////////////////////////////////////// 
     } catch(FacebookApiException $e) { 

     $login_url = $facebook->getLoginUrl(); 
     echo 'Please <a href="' . $login_url . '">login.</a>'; 
     error_log($e->getType()); 
     error_log($e->getMessage()); 
     }}} else { 

     $login_url = $facebook->getLoginUrl(); 
     echo 'Please <a href="' . $login_url . '">login.</a>'; 
     } 

function displayResult($results, $output, $data){ 

    echo '' . json_encode($data) . ''; 
} 

mysql_close($link); 
exit(); 
?> 

각 배열의 직접 출력은 1

[{"page_id":"111812165504902","name":"Sevilla","description":"Seville is a Spanish city, Spain.","geometry":{"type":"Point","coordinates":["-5.98694","37.3772"]},"latitude":"37.3772","longitude":"-5.98694","checkin_count":"2083255","display_subtext":"City"}] 

어레이 2

[{"pic_square":"https:\/\/fbexternal-a.akamaihd.net\/safe_image.php?d=AQALHDy62kBNTCO=q","pic_big":"https:\/\/fbexternal-a.akamaihd.net\/safe_image.php?d=AQA9I5AOB1ekj1OB&w=d","fan_count":"83323","type":"CITY"}] 

내가 individualy 확인이

ARRAY 등 무언가 resu lts는 javascript에 배열을 보내면 모든 것이 정상적으로 보이지만 결합하려고하면 두 번째 배열에 포함 된 데이터는 "정의되지 않음"입니다. 어떤 생각

+0

나는 페이스 북의 API를 사용하는 방법에 대해 아무것도 몰라하지만 그들은 이미 변환되지 않는 경우 ... 당신이 보이고있다 배열이하는 JSON 형식으로되어 있습니다 당신이'json_decode ($ results, true);를 실행할 필요가있는 배열에''-'true'는 객체가 아닌 배열을 반환한다는 것을 알았다. 그런 다음 병합에 문제가 없어야합니다. – mic

+0

나는 배열 1과 배열 2가 배열 형식이 아닐 것이라고 생각한다. json 형식과 같은 모양 일 수 있습니다. 배열로 변환 한 다음 array_merge를 적용하십시오. – Fisherman

답변

0

// 변경 라인을 가지고

$union = array_merge(json_decode($ret_obj_place), json_decode($ret_obj_page2));