如何使用PHP从多维数组中的重复值中获取一个值?

时间:2016-05-18 09:20:22

标签: php arrays multidimensional-array

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

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

多维数组:

<html>

    <head>
    <script src="jq.js"></script>

    <script> 
    $(document).ready(function() {
    $('#byremaining').attr('disabled','disabled');
    });

    $(function(){

    $('#remaining').click(function(){
        $('#byremaining').removeAttr('disabled');
    });

    });
    </script>

    </head>
    <body>
    Sort by:
    <select name="plaats" id="plaats">
        <option value="plaats1">plaats1</option>
        <option value="plaats2">plaats2</option>
        <option value="plaats3">plaats3</option>
        <option value="plaats4">plaats4</option>
        <option value="remaining" id="remaining">remaining</option>
    </select>
    <br/>
    date range:<br/>

    Remaining:<input type="text" value="" name="byremaining" id="byremaining"></input><br/>

    </body>

    </html>

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

预期产出 - 像这样:

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

3 个答案:

答案 0 :(得分:0)

我认为你想要的通常被称为&#34;索引数组&#34;。您可以查看array_column,我认为这将满足您的需求。

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

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

答案 1 :(得分:0)

请查看最新消息: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 :(得分:0)

工作demo。您可以使用foreach Statement

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

OR

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