我有一个以下列格式打印数组的变量。我希望获取id的值,但不应该有重复的值。所以根据给定的数组,我想要的id的值是
Requires: models.Requires{
Name: “db",
},
},
为了获得独特的价值,我尝试了这段代码
1,2,3,4
并获取我使用此代码的值
array_unique($value, SORT_REGULAR);
但我仍然得到重复的值,并且没有获取id的值
以下是数组
foreach( $value as $array => $pervalue)
{
}
答案 0 :(得分:2)
正如我在评论中所说,最好的方法可能是重组您的输入数组。在您提供早期代码之前,我们只能在生成数组后提供帮助。
如果您尚未处理每个元素,则Array_unique非常棒。因为您需要遍历数组以隔离您的id值,所以您可以随意清除重复项。以下是几种方式......
*注意我正在使用临时密钥以避免调用array_unique。不会存储重复的值。
代码:演示:https://3v4l.org/BWT1R
$values = [
[
["id" => 1],
["id" => 3],
["id" => 8]
],
[
["id" => 1]
],
[
["id" => 3],
["id" => 2]
]
];
$unique_ids = array_column(array_merge(...$values), "id", "id");
sort($unique_ids);
var_export($unique_ids);
echo "\n\n";
foreach ($values as $groups) {
foreach ($groups as $rows) {
$result[$rows["id"]] = $rows["id"];
}
}
sort($result);
var_export($result);
输出:
array (
0 => 1,
1 => 2,
2 => 3,
3 => 8,
)
array (
0 => 1,
1 => 2,
2 => 3,
3 => 8,
)
如果你想使用递归,这里有一个干净的方法:
array_walk_recursive($values, function ($v) use (&$result){
$result[$v] = $v;
});
sort($result);
var_export($result); // same output as above
答案 1 :(得分:0)
$numbers = array(
array(
array(
'id' => 1
),
array(
'id' => 3
),
array(
'id' => 4
),
),
array(
array(
'id' => 1
),
),
array(
array(
'id' => 3
),
array(
'id' => 2
),
),
);
$mag_numbers = array_merge($numbers[0], $numbers[1], $numbers[2]);
$needed_result = array_column($mag_numbers, 'id');
$final_needed_result = array_unique($needed_result, SORT_REGULAR);
foreach( $final_needed_result as $single)
{
var_dump($single);
}