我已经做过很多关于溢出和谷歌的调查,但结果都不适用于我的具体情况。
我有一个名为$ holder的占位符数组,值如下:
Array (
[0] => Array (
[id] => 1
[pid] => 121
[uuid] => 1
)
[1] => Array (
[id] => 2
[pid] => 13
[uuid] => 1
)
[2] => Array (
[id] => 5
[pid] => 121
[uuid] => 1
)
)
我试图从这个多维数组中提取不同的/唯一的值。我想要的最终结果是包含(13,121)或(最好)数组的变量,如下所示: 阵列( [0] => 13 [1] => 121 )
我再次尝试过序列化等等,但是在使用每个数组中的单个键操作时,不太明白它是如何工作的。
我试图尽可能清楚。我希望它有意义......
答案 0 :(得分:57)
看起来很简单:将所有pid
值提取到自己的数组中,通过array_unique
运行:
$uniquePids = array_unique(array_map(function ($i) { return $i['pid']; }, $holder));
同样的想法:
$pids = array();
foreach ($holder as $h) {
$pids[] = $h['pid'];
}
$uniquePids = array_unique($pids);
答案 1 :(得分:28)
在php> = 5.5中,您可以使用array_column:
array_unique(array_column($holder, 'pid'));
答案 2 :(得分:3)
试试这个
foreach($arr as $key => $val) {
$new_arr[] = $val['pid'];
}
$uniq_arr = array_unique($new_arr);
答案 3 :(得分:3)
只需迭代它并对结果应用array_unique
:
foreach($holder as $yourValues){
$pids[] = $yourValues['pid'];
}
$yourUniquePids = array_unique($pids);
答案 4 :(得分:2)
假设您的数组名为$ holder:
$unique = array();
foreach( $holder as $h )
if( ! in_array($h, $unique ) )
$unique[] = $h;
我相信比通过array_unique稍微有效一点。可能是一样的。
答案 5 :(得分:0)
您好请尝试下面给出的代码获取唯一值,然后对这些值进行排序
<?php
$sort_arr = unique_sort($holder, 'pid');
echo "<pre>";
print_r($sort_arr);
echo"</pre>";
/*function for get unique value then sort them*/
function unique_sort($arrs, $id) {
$unique_arr = array();
foreach ($arrs AS $arr) {
if (!in_array($arr[$id], $unique_arr)) {
$unique_arr[] = $arr[$id];
}
}
sort($unique_arr);
return $unique_arr;
}
感谢
答案 6 :(得分:0)
$uniquearray = [];
for($i=0;$i<count($assocarray);$i++){
if(!in_array($assocarray[$i]['KEY'],$uniquearray)){
$uniquearray[$i]= $assocarray[$i]['KEY'];
}
}
答案 7 :(得分:-1)
根据我的情况,我使用这种方法
List<String> array = new ArrayList<String>();
array.add("food");
array.add("drinks");
array.add("snack");
String result="";
if (array.contains("snack")) // avoid null pointer exception
{
int index =array.indexOf("snack") //find the index of arraylist
result=array.get(index);
}