Php 如何合并子数组值并生成唯一值的一维数组?

Php 如何合并子数组值并生成唯一值的一维数组?,php,arrays,multidimensional-array,array-merge,array-unique,Php,Arrays,Multidimensional Array,Array Merge,Array Unique,如何从多个数组中获得最终的唯一数组结果 我有这样一个数组: Array ( [0] => Array ( [0] => 8 [1] => 9 [2] => 7 ) [1] => Array ( [0] => 7 [1] => 8 [2] =

如何从多个数组中获得最终的唯一数组结果

我有这样一个数组:

Array
    (
    [0] => Array
        (
            [0] => 8
            [1] => 9
            [2] => 7
        )

    [1] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
            [3] => 33
            [4] => 21
        )

    [2] => Array
        (
            [0] => 11
            [1] => 12
            [2] => 33
            [3] => 21
            [4] => 9
            [5] => 31
        )
  )
预期结果:

Array(
    [0] => 7
    [1] => 8
    [2] => 9
    [3] => 33
    [4] => 21
    [5] => 11
    [6] => 12
    [7] => 31
)

如何使用php实现这一点?

在所需的输出索引中是相同的,您永远无法实现这一点。因为相同的索引被最近的值覆盖了

您可以得到如下结果:-

$final_array = array_unique(call_user_func_array('array_merge', $array)); //convert multi-dimensional array to single dimensional and remove duplicates
asort($final_array); // sort by value. this is optional
$final_array = array_values($final_array); // re-index final array and this is optional too
echo "<pre/>";print_r($final_array); // print final array
$final\u array=array\u unique(调用用户函数数组('array\u merge',$array))//将多维数组转换为一维数组并删除重复项
asort($final_数组);//按值排序。这是可选的
$final_数组=数组值($final_数组);//重新索引最终数组,这也是可选的
回声“;打印(最终数组);//打印最终数组

输出:-

在您想要的输出索引中,索引是相同的,您永远无法实现这一点。因为相同的索引被最近的值覆盖了

您可以得到如下结果:-

$final_array = array_unique(call_user_func_array('array_merge', $array)); //convert multi-dimensional array to single dimensional and remove duplicates
asort($final_array); // sort by value. this is optional
$final_array = array_values($final_array); // re-index final array and this is optional too
echo "<pre/>";print_r($final_array); // print final array
$final\u array=array\u unique(调用用户函数数组('array\u merge',$array))//将多维数组转换为一维数组并删除重复项
asort($final_数组);//按值排序。这是可选的
$final_数组=数组值($final_数组);//重新索引最终数组,这也是可选的
回声“;打印(最终数组);//打印最终数组
输出:-

就是这样

<?php
    $arr = [ [8,9,7], [7,8,9,33,21], [11,12,33,21,9,31] ];
    $final = array();    
    foreach($arr as $child){
      foreach($child as $value){
        $final[] = $value;
      }
    }
    $final = array_unique($final);
    print_r($final);
?>
这条路

<?php
    $arr = [ [8,9,7], [7,8,9,33,21], [11,12,33,21,9,31] ];
    $final = array();    
    foreach($arr as $child){
      foreach($child as $value){
        $final[] = $value;
      }
    }
    $final = array_unique($final);
    print_r($final);
?>

这需要三个核心PHP函数,sortarray\u mergarray\u unique

排序-对通过引用发送的数组进行排序,这意味着它不返回变量,而是更改数组本身的顺序

array\u merg-当与call\u user\u func\u组合时,array将动态地将所有数组组合在一起,不管有多少数组

数组_唯一-确保每个元素只有一个

<?php
$arr = [ [8,9,7], [7,8,9,33,21], [11,12,33,21,9,31] ];
$merged = array_unique(call_user_func_array('array_merge', $arr));
sort($merged);
print_r($merged);
?>
这是eval.in的内部:
这需要三个核心PHP函数,排序数组_merg数组_unique

排序-对通过引用发送的数组进行排序,这意味着它不返回变量,而是更改数组本身的顺序

array\u merg-当与call\u user\u func\u组合时,array将动态地将所有数组组合在一起,不管有多少数组

数组_唯一-确保每个元素只有一个

<?php
$arr = [ [8,9,7], [7,8,9,33,21], [11,12,33,21,9,31] ];
$merged = array_unique(call_user_func_array('array_merge', $arr));
sort($merged);
print_r($merged);
?>
这是eval.in的内部:

方法#1
foreach
循环,使用
isset()
按第一次出现的值排序()
(*此方法似乎是所有方法中最快的)

方法#2:分配临时键,强制覆盖值以确保无重复()

方法3
array\u merge()
splat操作符
array\u unique()
()

方法4:非正统的
json\u encode()
preg\u match\u all()
()()

方法#1
foreach
循环使用
isset()
,该循环根据值的第一次出现对值进行排序()
(*此方法似乎是所有方法中最快的)

方法#2:分配临时键,强制覆盖值以确保无重复()

方法3
array\u merge()
splat操作符
array\u unique()
()

方法4:非正统的
json\u encode()
preg\u match\u all()
()()

$array=[[8,9,7],[7,8,9,33,21],[11,12,33,21,9,31]];
foreach($array as $sub){
    foreach($sub as $v){
        $result[$v]=$v;  // force overwrite because duplicate keys cannot occur
    }
}
sort($result);  // sort and re-index
var_export($result);  // print to screen
// condensed output: array(7,8,9,11,12,21,31,33) 
$array=[[8,9,7],[7,8,9,33,21],[11,12,33,21,9,31]];
$unique=array_unique(array_merge(...$array));  // merge all subarrays
sort($unique);  // sort and re-index
var_export($unique);  // print to screen
// condensed output: array(7,8,9,11,12,21,31,33) 
$array=[[8,9,7],[7,8,9,33,21],[11,12,33,21,9,31]];
$unique=preg_match_all('~\b(\d+)\b(?!.*\b\1\b)~',json_encode($array),$out)?$out[0]:[];
sort($unique);  // sort and re-index
var_export($unique);  // print to screen
// condensed output: array(7,8,9,11,12,21,31,33)