2011-03-24 6 views
0


이것은 명확한 내용으로 새로운 질문을 올리기 위해 Shrapnel이 제안한대로 question 의 질문입니다.: whats-the-best-approach-should-this-for-this-php 문제

나는 내가 각 범주의 더 (예를 들어, 여기에 영화 = 2 등 = 3, 기업) 나는 또한 원하는 MySQL의 테이블에 저장하고 계산하지 않으려는 페이스 북 사용자가 데이터가

 
{ 
    "data": [ 
     { 
     "name": "Joker", 
     "category": "Public figure" 
     }, 
     { 
     "name": "Rafael Nadal", 
     "category": "Athlete" 
     }, 
     { 
     "name": "Lassi", 
     "category": "Company" 
     }, 
     { 
     "name": "Jacinda Barrett", 
     "category": "Public figure" 
     }, 
     { 
     "name": "cocacola", 
     "category": "Company" 
     }, 
     { 
     "name": "SWEENEY TODD", 
     "category": "Movie" 
     }, 
     { 
     "name": "The Notebook", 
     "category": "Movie" 
     }, 
     { 
     "name": "Unforgiven", 
     "category": "Movie" 
     } 
     ]} 

을 즉, 좋아하는이 각 카테고리의 이름을 다른 테이블에 저장하려면 (즉, 영화 카테고리의 경우 모든 카테고리에 대해 영화 (ID, 이름) 테이블이 있어야 함). 무엇 내가했던 것은


      $movie=0; // also define all variables here(i.e $company, $public figure etc) so that it would be increamented. 
     foreach($like['data'] as $jsondata=>$json) 
     { 
      if($json['category']==='Movie') 
     { 
     $name_movie=$json['name']; 
     $query1="insert into movies(id,name)values('', '" . mysql_real_escape_string($name_movie). "')"; 
     $result1=mysql_query($query1) or die("error in query".mysql_error()); 
     $movie++; // in the last this $movie++ will be inserted in other table 
     } 
     else 
        if($json['category']==='company') 
         { do the same steps as above} 
       else 
        . 
        . 
        . 
        //similarly for all others categories 



이지만 속도와 일관성 우려에 따라 비효율적 인 것 같다.

제 질문은 올바른 접근법을 사용하고 있거나이 cenario에 다른 것이 있어야합니다.

답변

1

이것은 더 깨끗한 코드입니다. 내가 범주별로 정렬 된 배열을 만들기 위해 JSON 데이터를 재 배열 : 나에게 당신은 샘플 JSON 데이터를 사용하여 확인할 수 있습니다 잘못된 결과를 제공 헬프 HCB하지만 코드에 대한

$tables = array('movie', 'company'); //etc 
$categories = array(); 
foreach($like['data'] as $jsondata=>$json) 
{ 
    $categories[$json['category']][] = $json['category']; 
{ 

foreach($categories as $key => $category) 
{ 
    if (in_array($key, $tables)) 
    { 

     $i = 0; 
     foreach($category as $item) 
     { 
      $query1="insert into " . $key . "(id,name)values('', '" . mysql_real_escape_string($item['name']). "')"; 
      $result1=mysql_query($query1) or die("error in query".mysql_error()); 
      $i++; 
     } 
     $category_count[$key] = $i; 
    } 
} 
+0

감사를 디코딩 한 후'acho $ item'을 데이터에 '영화'라는 단어가 6 번 표시되지만 카테고리 동영상이 사용되는 시간은 3 번뿐입니다. –