我有8k左右的对象数组,它们都有一个属性phase
,我试图过滤掉重复的阶段。我正在尝试array_unique
,但我似乎无法做到这一点。这是对象的片段:
array [
0 => {#525
"street_address1": "Some St. 1"
"street_address2": null
"phase": "101"
"sales_rep": "164"
"id": "abd90d6b-28a8-2be6-d6c1-abd9007aef38"
"name": "48TH ST E"
"block_minimum": 400
"block_maximum": 498
"side": 2
}
1 => {#527
"street_address1": "Some St. 2"
"street_address2": null
"phase": "101"
"sales_rep": "164"
"id": "abd90d6b-28a8-2be6-d6c1-abd9007aef38"
"name": "48TH ST E"
"block_minimum": 401
"block_maximum": 499
"side": 1
}
2 => {#580
"street_address1": "Some St. 3"
"street_address2": null
"phase": "103"
"sales_rep": "164"
"id": "a1d58c9c-6ba7-ebc6-8a74-a1d5806e0bcf"
"name": "11TH AVE S"
"block_minimum": 4700
"block_maximum": 4798
"side": 2
}
3 => {#528
"street_address1": "Some St. 4"
"street_address2": null
"phase": "103"
"sales_rep": "164"
"id": "a1d58c9c-6ba7-ebc6-8a74-a1d5806e0bcf"
"name": "11TH AVE S"
"block_minimum": 4700
"block_maximum": 4798
"side": 2
}
]
这将是后端api GET返回。我有一个方法从数据库获取所有地址,然后需要过滤并只返回唯一的阶段。我还要补充一点,我使用Laravel 5.4,虽然我没有看到任何帮助我的助手。
答案 0 :(得分:1)
看一下https://laravel.com/docs/5.5/collections#method-unique,如果你不能在查询构建器中这样做,这似乎就是你需要过滤的东西。如果您可以在查询构建器中执行此操作,则更有效,因为您不需要处理这些8k行。
答案 1 :(得分:1)
好吧,我让这个工作,它完全适合我。感谢大家!
$phases = array();
foreach ($salesRepAddresses as $address) {
$phases[] = $address->phase;
}
$uniquePhases = array_unique($phases);
return $uniquePhases;
答案 2 :(得分:0)
您需要使用array_column
收集所有阶段,然后array_unique
试试这个:
$phases = array_column($array, 'phase');
$uniquePhases = array_unique($phases);
答案 3 :(得分:0)
在php.net manual for array_unique()的评论部分,有一个确切的例子。如果您不理解它,或者它不起作用,请离开;)
为任何单个键索引创建唯一的多维数组。我 想为特定代码创建多维唯一数组
代码:我的数组是这样的,
<?php
$details = array(
0 => array("id"=>"1", "name"=>"Mike", "num"=>"9876543210"),
1 => array("id"=>"2", "name"=>"Carissa", "num"=>"08548596258"),
2 => array("id"=>"1", "name"=>"Mathew", "num"=>"784581254"),
);
?>
您可以为id,name或num等任何字段使其唯一。
我已经为此开发了这个功能:
<?php
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
?>
现在,从您的代码
中调用此函数这样的事,
<?php
$details = unique_multidim_array($details,'id');
?>