2013-06-07 5 views
0

나는 두 개의 id을 가지고 있습니다. 하나는 의 id이고 두 번째는 Facebook 친구의 ID입니다. 나는 이것을 두 개의 데이터베이스에 저장하려고합니다. 설명 idPost이고 friend idUser 표입니다. 내가 직면하고있는 문제는 "id"값이 덮어 쓰여지고 있다는 것입니다.두 개의 동일한 키를 가진 php 배열

검색된 데이터 :

{ 
    "data": [ 
    { 
    "id": "aaaaaaaaaaaaaaaa", 
    "from": { 
     "name": "xxxx xxxx", 
     "id": "111111111" 
    }, 
    "message": "fetch this comment :P", 
    "can_remove": true, 
    "created_time": "2013-06-05T09:00:00+0000", 
    "like_count": 0, 
    "user_likes": false 
    }, 
    { 
    "id": "aaaaaaaaaaaaaaaa", 
    "from": { 
     "name": "xxxxxxxxx", 
     "id": "111111111" 
    }, 
    "message": "Fetching comments.", 
    "can_remove": true, 
    "created_time": "2013-06-05T17:22:34+0000", 
    "like_count": 0, 
    "user_likes": false 
    }, 
    { 
    "id": "aaaaaaaaaaaaaaaa", 
    "from": { 
     "name": "xxxxxxxxx", 
     "id": "11111111111" 
    }, 
    "message": "?", 
    "can_remove": true, 
    "created_time": "2013-06-05T17:27:55+0000", 
    "like_count": 0, 
    "user_likes": false 
    }, 

코드 :

foreach($jsonIterator as $key => $val) { 
echo "$key: => $val"; 
       $post_obj_insert->user_id = $question->user_id; 
       if($key=='from'){ 
        $user_obj->where('FacebookId', $val)->get(); 
        if($user_obj->FacebookId=''){ 
         if($key=='name'){ 
          $user_obj->name = $val; 
          $flag_usr = $flag_usr + 1; 
         } 
         if($key=='id'){ 
          $user_obj->id = $val; 
          $flag_usr = $flag_usr + 1; 
         } 
         $user_obj->FacebookId = $val; 
         $flag_usr = $flag_usr + 1; 
        } 
        if($flag_usr==2){ 
         $user_obj->isRegistered=0; 
         $user_obj->save(); 
         $user_obj = new user(); 
        } 
       } 

       else if($key=='message'){ 
        $post_obj_insert->post_text = $val; 
        $flag=$flag+1; 
       } 
       else if($key=='like_count'){ 
        $post_obj_insert->count = $val; 
        $flag=$flag+1; 
       } 
       else if($key=='id'){ 
        $post_obj_insert->facebook_post_id = $val; 
        $flag=$flag+1; 
       } 
       if($flag==3){ 
        $post_obj_insert->save(); 
        $flag=0; 
        $post_obj_insert = new Post(); 
       }   
      } 

답변

0

당신이 반복자 객체를 사용하는 당신은 그들이 서로 다른 수준에서 ID 키를 구별 할 수있는 방법을 확인해야합니다 때문에 여기에 표시된 것과 같이 모두 보입니다.

foreach ($jsonIterator as $key => $val) { 
    if(!is_array($val) && $key == 'id') { 
     echo "$key => $val\n"; 
    } 
} 

귀하의 경우에는

foreach ($jsonIterator as $key => $val) { 
    if($key === 'from') { 
     echo $val['id'] . "\n"; 
    } 
} 

반대로 그것은

foreach ($jsonIterator as $key => $val) { 
    if($key === 'from') { 
     if (array_key_exists('id', $val)) { 
      echo $val['id'] . "\n"; 
      // Process 
      // $user_obj->id = $val['id']; 
      // $flag_usr = $flag_usr + 1; 
     } 
    } 
} 
과 같이해야한다
관련 문제