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函数,sort、array\u merg和array\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)