php 多维数组的差集以及将多维数组元素返回成一维数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 多维数组的差集以及将多维数组元素返回成一维数组相关的知识,希望对你有一定的参考价值。
<?php
$a1 = array(
"a1" => 1,
"a3" => array(
"a31" => 31
),
"a4" => array(
"a41" => 41
),
"a5" => 5
);
// ARRAY 2
$a2 = array(
"a1" => 1,
"a2" => 2,
"a3" => array(
"a31" => 31,
"a32" => array(
"a321" => 321,
"a322" => 322
)
),
"a4" => array(
"a41" => 42
),
"a5" => array(
"a51" => 51,
"a52" => 52
)
);
//多维数组的差集
function array_diff_assoc_recursive($array1,$array2){
$diffarray=array();
foreach ($array1 as $key=>$value){
//判断数组每个元素是否是数组
if(is_array($value)){
//判断第二个数组是否存在key
if(!isset($array2[$key])){
$diffarray[$key]=$value;
//判断第二个数组key是否是一个数组
}elseif(!is_array($array2[$key])){
$diffarray[$key]=$value;
}else{
$diff=array_diff_assoc_recursive($value, $array2[$key]);
if($diff!=false){
$diffarray[$key]=$diff;
}
}
}elseif(!array_key_exists($key, $array2) || $value!==$array2[$key]){
$diffarray[$key]=$value;
}
}
return $diffarray;
}
print_r(array_diff_assoc_recursive($a1,$a2));
print_r(array_diff_assoc_recursive($a2,$a1));
?>
/*
* 返回多维数组里的一维数组元素
* @author MAGENJIE(magenjie@variflight.com)
* @datetime 2019-04-18T14:38:31+0800
* $a = [ 'a' => ['b' => ['c','e','f']], 'd' => ['11','22','33'], 'g' => 'xxx'];
* $b = array_element_recursive($a);
* var_dump($b);
* array(3) {
[0]=>
array(3) {
[0]=>
string(1) "c"
[1]=>
string(1) "e"
[2]=>
string(1) "f"
}
[1]=>
array(3) {
[0]=>
string(2) "11"
[1]=>
string(2) "22"
[2]=>
string(2) "33"
}
[2]=>
string(3) "xxx"
* }*/
if (!function_exists('array_element_recursive')) {
function array_element_recursive($array, &$return = []){
foreach ($array as $key => $value) {
if (is_array($value)) {
if (count($value) === count($value, 1)) {
$return[] = $value;
}else{
array_element_recursive($value, $return);
}
}else{
$return[] = $value;
}
}
return $return;
}
}
以上是关于php 多维数组的差集以及将多维数组元素返回成一维数组的主要内容,如果未能解决你的问题,请参考以下文章
PHP多维数组转一维数组
PHP获取两个多维数组的差集
PHP获取两个多维数组的差集
在php中将一维数组转换为多维数组[重复]
php中一维或多维数组去除重复项
php 一个多维数组根据一维数组筛选数据,得到新数组