繁体   English   中英

需要获取数组中的唯一值

[英]Need to get unique values in array

Array
(
)
Array
(
)
Array
(
    [0] => 14
)
Array
(
    [0] => 14
)
Array
(
    [0] => 14
)
Array
(
    [0] => 14
)
Array
(
    [0] => 14
)
Array
(
    [0] => 14
    [1] => 12
)

我想要这个数组

Array
(
    [0] => 14
    [1] => 12
)

这是我的代码:

$colorarray = array();
foreach($catIds as $catid){
    $colorarray[] = $catid;
}

需要获取唯一的数组值

谢谢

您可以将call_user_func_arrayarray-merge结合使用来展平阵列,然后将array-unique用作:

$res = call_user_func_array('array_merge', $arr);
print_r(array_unique($res)); // will give 12 and 14

直播示例3v4l

或者按照@Progrock的建议: $output = array_unique(array_merge(...$data)); (我喜欢使用...语法)

您始终可以执行以下操作:

$colorarray = array();
foreach($catIds as $catid){
    if(!in_array($catid, $colorarray) {
       $colorarray[] = $catid;
    }
}

但这也具有n * n的复杂性,因此,如果您的数组太大,那么它可能不是您最优化的解决方案。

您可以执行以下操作以生成唯一数组。

array_unique($YOUR_ARRAY_VARIABLE, SORT_REGULAR);

这样,数组中只有唯一值,而不是重复值。

更新

这也是做同样的一种方法

<?php
 // define array 
 $a = array(1, 5, 2, 5, 1, 3, 2, 4, 5); 

 // print original array 
 echo "Original Array : \n"; 
 print_r($a); 

 // remove duplicate values by using  
 // flipping keys and values 
 $a = array_flip($a); 

 // restore the array elements by again  
 // flipping keys and values. 
 $a = array_flip($a); 

 // re-order the array keys 
 $a= array_values($a); 

 // print updated array 
 echo "\nUpdated Array : \n "; 
 print_r($a); 
?>

参考链接

希望这对您有帮助

PHP:从数组中删除重复的值

<?php
$fruits_list = array('Orange',  'Apple', ' Banana', 'Cherry', ' Banana');
$result = array_unique($fruits_list);
print_r($result);
?>

------您的案子--------

  $result = array_unique($catIds);
    print_r($result);

您可以通过遍历原始对象的每个子数组来构造一个包含所有值的新数组,然后使用array_unique过滤结果:

<?php
$data =
[
    [
        0=>13
    ],
    [
        0=>13
    ],
    [
        0=>17,
        1=>19
    ]
];

foreach($data as $array)
    foreach($array as $v)
        $all_values[] = $v;

var_export($all_values);
$unique = array_unique($all_values);
var_export($unique);

输出:

array (
    0 => 13,
    1 => 13,
    2 => 17,
    3 => 19,
  )array (
    0 => 13,
    2 => 17,
    3 => 19,
  )

我已更新您的代码,请检查

$colorarray = array();
foreach($catIds as $catid){
    $colorarray[$catid] = $catid;
}

这将为您提供100%的唯一值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM