获取具有不同值的数组的更优雅方式
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
已经是唯一标识符了。如果你关注。
我有这个数组:
$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
已经是唯一标识符了。如果你关注。