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

More elegant way of getting array with 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 进行插入。

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

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

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

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

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

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

这应该适合你:

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

有一件事没有提到,数组是内置的,如果你可以自己管理它们的键的话。关联数组只能有一次键。所以我喜欢做的是使用主键或键的唯一标识符。

你不能拥有像这样具有相同键的数组。

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

因为键a已经是唯一标识符了。如果你关注。