【问题标题】:php get duplicate data once in array objectphp在数组对象中获取一次重复数据
【发布时间】:2018-06-07 14:07:11
【问题描述】:

我有 php 数组对象,我需要在我的代码中显示一次重复的 field_header。我有 html 表,并希望在表中重复 field_header 和 td 我的数组对象数据中的其他数据,这是:

    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

【问题讨论】:

  • 您能否添加导致错误结果的 PHP 代码。
  • @Nigel Ren 编辑帖子并添加我的 php foreach 代码

标签: php arrays object


【解决方案1】:

您可以使用嵌套循环来获取所需的数据。这是我所做的:

<?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

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2023-01-22
    • 1970-01-01
    • 2019-06-28
    • 2016-12-08
    相关资源
    最近更新 更多