2017-12-26 2 views
0

PHP 배열 객체가 있고 코드에서 한 번 중복 된 field_header를 표시해야합니다. 나는 HTML 테이블을 가지고 disply 번이 내 배열 객체 데이터 TD 테이블의 THEAD 및 기타 데이터에 field_header 복제하려는 :PHP 배열 객체에서 중복 데이터를 한 번받습니다.

Array 
    (
    [filed_p_1] => stdClass Object 
    (
     [field_id] => 1 
     [field_table] => product 
     [field_realname] => field one 
     [field_namekey] => filed_p_1 
     [field_header] => number_one 
     [field_type] => text 
    ) 

[filed_p_2] => stdClass Object 
    (
     [field_id] => 2 
     [field_table] => product 
     [field_realname] => field two 
     [field_namekey] => filed_p_2 
     [field_header] => number_two 
     [field_type] => text 
    ) 

[filed_p_3] => stdClass Object 
    (
     [field_id] => 3 
     [field_table] => product 
     [field_realname] => field three 
     [field_namekey] => filed_p_3 
     [field_header] => number_three 
     [field_type] => text 

    ) 

[filed_p_1_2] => stdClass Object 
    (
     [field_id] => 19 
     [field_table] => product 
     [field_realname] => field four 
     [field_namekey] => filed_p_1_2 
     [field_header] => number_one 
     [field_type] => text 
    ) 

) 

내 결과이 형식 표시하려면 : 난

number_one 
field one 
field four 

number_two 
field two 

number_three 
field three 

을 foreach 루프를 사용하고 데이터를 표시하지만 결과는 다음과 같습니다.

foreach ($fields as $fieldName => $oneExtraField) { 

?> <thead><tr><th> <?php echo $oneExtraField->field_header; ?></th></tr></thead> 
    <tr> 
     <td> 
      <?php echo $oneExtraField->field_realname ?> 
     </td> 
    </tr> 
<?php 

} 

number_one 
field one 

number_two 
field two 

number_three 
field three 

number_one 
field four 
+1

당신이 당신에게 잘못된 결과를 제공하는 PHP 코드를 추가하십시오 수 있습니다. –

+0

@Nigel Ren이 게시물을 편집하고 내 PHP foreach 코드를 추가하십시오. – stackUser

답변

2

원하는 데이터를 얻으려면 중첩 루프를 사용할 수 있습니다. 여기에 내가 무슨 짓을 :

<?php 
// Create array of objects 
$fields = array 
    (
    "filed_p_1" => (object) [ 
     "field_id" => 1, 
     "field_table" => "product", 
     "field_realname" => "field one", 
     "field_namekey" => "filed_p_1", 
     "field_header" => "number_one", 
     "field_type" => "text" 
    ], 

"filed_p_2" => (object) [ 
     "field_id" => 2, 
     "field_table" => "product", 
     "field_realname" => "field two", 
     "field_namekey" => "filed_p_2", 
     "field_header" => "number_two", 
     "field_type" => "text" 
    ], 

"filed_p_3" => (object) [ 
     "field_id" => 3, 
     "field_table" => "product", 
     "field_realname" => "field three", 
     "field_namekey" => "filed_p_3", 
     "field_header" => "number_three", 
     "field_type" => "text" 

    ], 

"filed_p_1_2" => (object) [ 
     "field_id" => 19, 
     "field_table" => "product", 
     "field_realname" => "field four", 
     "field_namekey" => "filed_p_1_2", 
     "field_header" => "number_one", 
     "field_type" => "text" 
    ] 

); 

    // Create array for headers 
    $header_array = array(); 

    // Loop through each array object 
    foreach ($fields as $key => $value) { 
    // Set header value 
    $header = $value->field_header; 
    // Check if header value has already been used, proceed if not 
    if(!in_array($header,$header_array)) { 
     // Add header value to $header_array and echo header 
     $header_array[] = $header; 
     echo $header; 
     echo "<br />"; 
     // Loop through $fields again and echo every field_realname with that header 
     foreach ($fields as $fieldName => $oneExtraField) { 
     if($header == $oneExtraField->field_header) { 
      echo $oneExtraField->field_realname; 
      echo "<br />"; 
     } 
     } 
     echo "<br />"; 
    } 
    } 
?> 

이 출력 :

number_one 
field one 
field four 

number_two 
field two 

number_three 
field three