获得具有不同值的数组的更优雅方式

时间:2015-01-16 20:19:19

标签: php arrays distinct-values

我有这个数组:

$array[] = [
      'a' => $a,
      'b' => $b,
];

该数组包含10个条目,$ a可以在那里多次使用相同的值,我只需要其中一个条目用于数据库插入。

我无法让array_unique工作,因为它抛出

 array to string conversion
尝试使用

时出现

错误

 $result = array_unique($array);

我现在做了一个foreach循环,感觉这是错误的:

    $z = [];
    foreach ($array as $x) {

        if (@!in_array($x['a'],$z)) {
            $z[] = $x['a'];
        }
    }

我之后使用$ z作为插入。

有人能指出我如何区分数组值的正确方向吗?

3 个答案:

答案 0 :(得分:3)

这应该适合你:

$result = array_unique($array);这没用,因为你有一个多维数组!)

<?php


    //Example data
    $array[] = [
          'a' => 1,
          'b' => 1,
          'c' => 1,
          'd' => 2,
          'e' => 2,

    ];

    $array = array_map("array_unique", $array);
    print_r($array);

?>

输出:

Array ( [0] => Array ( [a] => 1 [d] => 2 ) )

答案 1 :(得分:1)

根据您的二维数组,您需要:

$array = array_map('array_unique', $array);

或者,如果您不需要二维数组,只需使用:

$array = [
      'a' => $a,
      'b' => $b,
];

然后:$array = array_unique($array);

答案 2 :(得分:0)

如果您可以自己管理密钥,那么未提及的一件事就是阵列是唯一的。关联数组只能拥有一次密钥。所以我喜欢使用主键或键的唯一标识符。

您不能拥有具有相同键的数组。

array(
     'a' => $a
     'a' => $b
)

因为密钥a已经是唯一标识符。如果你跟着。