2016-07-20 8 views
0

이 같은 주어진 gategories에 할당 필드를 얻기 위해 내가 노력하고 하나 개의 필드가이PHP는 foreach 루프에서 독특한 배열을 가져

name  | category_ids 
color  | 1,2 
size  | 1,3 

같은 여러 범주에 할당 할 수있는 두 개의 테이블 (카테고리 및 필드),이

foreach($category_ids as $category_id){ 
    $fields = $this->model->getFields($category_id); 
     foreach ($fields as $field) { 
     echo $field->name; 
     } 
} 

이 출력은 중복을 포함하여 값을 제공합니다. 여기에서 중복을 제거하려면 어떻게해야합니까? 편집을 도와주세요 : 예 $category_ids를 들어 1,2 그때 내가 무엇입니까 출력 color,color,size 이다하지만 내가 color,size

+2

db를 정규화하십시오. –

+0

'$ category_ids '에는 무엇이 있습니까? 현재 출력되는 코드는 무엇입니까? 예상되는 결과는 무엇입니까? 거기에 붙여 넣으면 해결할 수 있습니다. 감사합니다 –

+0

질문에 당신이 보여준 예제 입력에서 원하는 결과를 입력하십시오 – BeetleJuice

답변

1

당신은 배열의 모든 가져온 값을 저장할 수와 같은 출력이 될 원하는 한 다음에 array_unique 기능을 사용할 수 있습니다 중복 값을 제거하십시오.

$existing = array(); 
foreach($category_ids as $category_id) { 

    $fields = $this->model->getFields($category_id); 
    foreach ($fields as $field) { 
     if (!in_array($field->name, $existing)) { 
      $existing[] = $field->name; 
      echo $field->name; 
     } 
    } 
} 

을하지만 난 당신이 DB를 정상화하는 것이 좋습니다 싶습니다

$fieldsArray = []; 
foreach($category_ids as $category_id){ 
    $fields = $this->model->getFields($category_id); 
     foreach ($fields as $field) { 
      $fieldsArray[] = $field->name; 
     } 
} 
$fieldsArray = array_unique($fieldsArray); 
+0

이것은 정확히 내가 찾고 있던 것입니다. 감사! – Sanjeev

0

이 같은 시도 할 수 있습니다. 그것은 최상의 해결책이 될 것입니다.

관련 문제