简体   繁体   English

我如何检查此数组中的唯一键和值

[英]How can i check the unique key and value in this array

Array ( 
       [0] => Array ( [2] => 3 ) 
       [1] => Array ( [12] => 32 ) 
       [2] => Array ( [2] => 3 ) 
       [3] => Array ( [24] => 42 ) 
);

How can i get the output as unique key value. 我如何获得作为唯一键值的输出。 I need to remove the duplicate values. 我需要删除重复的值。 I need the o/p like this 我需要这样的输出

Array ( 
       [0] => Array ( [2] => 3 ) 
       [1] => Array ( [12] => 32 ) 
       [2] => Array ( [24] => 42 ) 
);

array_reduce is likely designed for this purpose: array_reduce可能是为此目的而设计的:

$a = [ [ 2 => 3 ], [ 3 => 4 ], [ 3 => 15 ], [ 2 => 3 ] ];
array_reduce($a, function($memo, $el) { 
  if(false === array_search($el, $memo)) array_push($memo, $el); 
  return $memo; 
}, array())

#⇒ array(3) {
#  [0] =>
#  array(1) {
#    [2] =>
#    int(3)
#  }
#  [1] =>
#  array(1) {
#    [3] =>
#    int(4)
#  }
#  [2] =>
#  array(1) {
#    [3] =>
#    int(15)
#  }
#}

Try this: 尝试这个:

$array = array(
    array(2 => 3),
    array(12 => 32),
    array(2 => 3),
    array(24 => 32)
);

echo 'before array_unique_multi:' . "\n";
print_r($array);

echo 'after array_unique_multi:' . "\n";
print_r(array_unique_multi($array));

function array_unique_multi($array)
{
    $hashAry = array();
    foreach($array as $k=>$v){
        $hash = md5(serialize($v));
        if(in_array($hash, $hashAry)) unset($array[$k]);
        else $hashAry[]=$hash;
    }
    $array = array_values($array);
    return $array;
}

Output: 输出:

before array_unique_multi:
Array
(
    [0] => Array
        (
            [2] => 3
        )

    [1] => Array
        (
            [12] => 32
        )

    [2] => Array
        (
            [2] => 3
        )

    [3] => Array
        (
            [24] => 32
        )

)
after array_unique_multi:
Array
(
    [0] => Array
        (
            [2] => 3
        )

    [1] => Array
        (
            [12] => 32
        )

    [2] => Array
        (
            [24] => 32
        )

)

You can use the function array_unique . 您可以使用array_unique函数。
http://php.net/manual/fr/function.array-unique.php http://php.net/manual/fr/function.array-unique.php

foreach ($myMultiArray as $index => $doublonArray) {
    $myMultiArray[$index] = array_unique($doublonArray);
}

Use this. 用这个。 This will store all the different key / value pairs in the new array. 这会将所有不同的键/值对存储在新数组中。

$test = array(
    array(2 => 3),
    array(12 => 32),
    array(2 => 3),
    array(24 => 42)
);

$tmpArray = array();
$newArray = array();

foreach ($test as $elements) {
    foreach ($elements as $key => $val) {
        if (!array_key_exists($key, $tmpArray) || $tmpArray[$key] !== $val) {
            $tmpArray[$key] = $val;
        }
    }
}
foreach ($tmpArray as $key => $val) {
    $newArray[] = array($key => $val);
}

var_dump($newArray);

Output: 输出:

array
  0 => 
    array
      2 => int 3
  1 => 
    array
      12 => int 32
  2 => 
    array
        24 => int 42
$check_arr = Array ( 
  [0] => Array ( [13] => 1 )
  [1] => Array ( [13] => 3 ) 
  [2] => Array ( [13] => 1 ) 
  [3] => Array ( [10] => 3 ) 
) ;

print_r(array_unique($check_arr));

This my result. 这是我的结果。

Array ( [0] => Array ( [13] => 1 ) );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM