【问题标题】:How to get one value from duplicates values in Multidimensional array using PHP?如何使用 PHP 从多维数组中的重复值中获取一个值?
【发布时间】:2016-05-18 09:20:21
【问题描述】:

我有一个多维数组,有些值是重复的,有些是唯一的。

重复值是父值,唯一值是重复值的子值。

多维数组:

Array
(
    [0] => Array
        (
            [L1_ID] => 21
            [L1_ATTR_DESC] => Project Overview
            [L2_ATTR_DESC] => Project Status
            [L3_ATTR_DESC] => Ready
        )
    [1] => Array
        (
            [L1_ID] => 21
            [L1_ATTR_DESC] => Project Overview
            [L2_ATTR_DESC] => Project Status
            [L3_ATTR_DESC] => Pending
        )
    [2] => Array
        (
            [L1_ID] => 21
            [L1_ATTR_DESC] => Project Overview
            [L2_ATTR_DESC] => Project Status
            [L3_ATTR_DESC] => Completed
        )
     [3] => Array
        (
            [L1_ID] => 21
            [L1_ATTR_DESC] => Project Overview
            [L2_ATTR_DESC] => Project Quality
            [L3_ATTR_DESC] => Independ
        )
       [4] => Array
        (
            [L1_ID] => 21
            [L1_ATTR_DESC] => Project Overview
            [L2_ATTR_DESC] => Project Quality
            [L3_ATTR_DESC] => G+1
        )
)

我想显示重复值打印一次,唯一值应该是重复值的子值。

预期输出 - 像这样:

-Project Status      -Project Build
    --Ready             --Independ
    --Pending           --G+1
    --Completed

【问题讨论】:

  • 好的,你现在尝试了什么?它没有按预期工作吗?
  • 其实我很困惑如何做到这一点。
  • 使用循环和条件来存储你想要的
  • 首先,您的多维数组没有足够的描述性(或可理解性),无法将数组构建到您想要的结构中。我想如果您的意思是“项目构建”是“项目质量”,那么您只需要遍历数组,检查“L2_ATTR_DESC”并将其排序到另一个数组中。
  • @ManishTiwari 哪一部分让你感到困惑?

标签: php arrays multidimensional-array


【解决方案1】:

只是为了检查看看发生了什么:Online Link

$ps = array();
foreach($arr as $value){
    $index = str_replace(" ", "", strtolower($value['L2_ATTR_DESC']));
    $ps[$index][] = $value['L3_ATTR_DESC'];
}

echo '<pre>';
print_r($ps);

从现在开始,您可以按照自己的方式设计它。

【讨论】:

    【解决方案2】:

    我认为您想要的通常称为“索引数组”。您可以查看array_column,我认为这将满足您的需求。

    $array = array(/* multidimensional array */);
    $index = array_column($array, L3_ATTR_DESC);
    

    $index 将包含与 $array 中的 L3_ATTR_DESC 关联的值数组。

    【讨论】:

    • 你为什么这么想?为什么不自信?
    【解决方案3】:

    工作demo。可以使用 foreach 语句

    foreach($a as $arg) {
       $tmp[$arg['L1_ATTR_DESC']][$arg['L2_ATTR_DESC']][] = $arg['L3_ATTR_DESC'];
    }
    
    $output = array();
    foreach($tmp as $type => $labels) {
    $output[] = array(
        'L1_ATTR_DESC' => $type,
        'L2_ATTR_DESC' => $labels
      );
    }
    

    我想你期待这样的输出

     Array
    (
    
         [L1_ATTR_DESC] => Project Overview
         [L2_ATTR_DESC] => Array
             (
                [Project Status] => Array
                    (
                         [0] => Ready
                         [1] => Pending
                         [2] => Completed
                    )
    
                [Project Quality] => Array
                    (
                         [0] => Independ
                         [1] => G+1
                    )
           )
    )
    

    foreach($a as $arg)
    {
        $tmp[$arg['L2_ATTR_DESC']][] = $arg['L3_ATTR_DESC'];
    }
    print_r($tmp);
    

    输出

        Array
        (
            [Project Status] => Array
                (
                     [0] => Ready
                     [1] => Pending
                     [2] => Completed
                )
    
            [Project Quality] => Array
                (
                     [0] => Independ
                     [1] => G+1
                )
        )
    

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多