如何在PHP中获得多维数组中的唯一元素


How do I get unique elements in my multidimensional array in PHP?

这是我的数组:

Array
    (
        [0] => Array
            (
                [entity_id] => 1
                [value] => new
                [label] => New
            )
        [1] => Array
            (
                [entity_id] => 3
                [value] => pending_payment
                [label] => Pending Payment
            )
        [2] => Array
            (
                [entity_id] => 4
                [value] => pending_paypal
                [label] => Pending Paypal
            )
        [3] => Array
            (
                [entity_id] => 5
                [value] => processing
                [label] => Processing
            )
        [4] => Array
            (
                [entity_id] => 6
                [value] => complete
                [label] => Complete
            )
        [5] => Array
            (
                [entity_id] => 7
                [value] => canceled
                [label] => Canceled
            )
        [6] => Array
            (
                [entity_id] => 8
                [value] => closed
                [label] => Closed
            )
        [7] => Array
            (
                [entity_id] => 9
                [value] => holded
                [label] => Holded
            )
        [8] => Array
            (
                [entity_id] => 10
                [value] => payment_review
                [label] => Payment Review
            )
        [9] => Array
            (
                [entity_id] => 11
                [value] => new
                [label] => New
            )
        [10] => Array
            (
                [entity_id] => 13
                [value] => pending_payment
                [label] => Pending Payment
            )

UPDATE这是print_r的结果。可以看到,数组[0]数组[6]是相同的。还有数组[7]和数组[1]。我怎样才能摆脱其中一个呢?thx

我试过这样做:

$input = $my_array
$temp  = $input;
foreach ( $temp as &$data ) {
    unset($data['id']);
}
$output = array_intersect_key($input, array_unique($temp));

但是没有任何结果:

$result = array();
foreach ($myArray as $array) {
    if (isset($result[$array['value']])) {
        continue;
    }
    $result[$array['value']] = $array;
}
print_r($result);

嘿,阿提拉,这应该有帮助。在本例中,您的$my_array被重命名为$wholeArray。我想比较一下标签就足够了:

$index=0;
$length = count($wholeArray);
foreach($wholeArray as $arrayElement){
    $temp = $arrayElement['label'];
    $index++;
    for($i = $index; $i < $length; $i++){
        if($wholeArray[$i]['label'] == $temp){
            unset($wholeArray[$i]);
            $length --;
        }
    }
}

如果您对代码有任何疑问,请随时提问:)