/**
* 二维数组对比,找出差异值数组返回
* @param $Array1 第一个数组
* @param $Array2 第二个数组
* @param $ArrayKey 两个数组需要比较的键
* @return array
*/
function Func_Array_Diff_Assoc2_Deep($Array1, $Array2,$ArrayKey) {
$RetAll = array();
foreach ($Array1 as $Key => $Val) {
$Status = 1;
foreach ($Array2 as $K=>$V){
$Status = 1;
$Str1 = "";
$Str2 = "";
foreach ($ArrayKey as $C=>$Va){
$Str1 .= $Val[$Va];
$Str2 .= $V[$Va];
}
if ($Str1 === $Str2){
$Status = 2;break;
}
}
if ($Status == 1){
$RetAll[] = $Val;
}
}
return array_filter($RetAll);
}
调用代码1
public function Index(){
$all = [["id"=> 10,"name"=>"开始","num"=>10],
["id"=> 112,"name"=>"你好","num"=>9],
["id"=> 15,"name"=>"撒旦","num"=>7]];
$dataAll = [["id"=> 10,"name"=>"开始","num"=>7],
["id"=> 112,"name"=>"你好","num"=>9],
["id"=> 15,"name"=>"撒旦","num"=>7]];
$data = Func_Array_Diff_Assoc2_Deep($all,$dataAll,array("num"));
print_r($data);
return $this->display("index",false);
}
差异数据返回
Array ( [0] => Array ( [id] => 10 [name] => 开始 [num] => 10 ) )
调用代码 2
public function Index(){
$all = [["id"=> 10,"name"=>"开始","num"=>10],
["id"=> 112,"name"=>"你好","num"=>9],
["id"=> 15,"name"=>"撒旦","num"=>7]];
$dataAll = [["id"=> 10,"name"=>"开始","num"=>7],
["id"=> 112,"name"=>"没事","num"=>9],
["id"=> 15,"name"=>"撒旦","num"=>7]];
$data = Func_Array_Diff_Assoc2_Deep($all,$dataAll,array("num","name"));
print_r($data);
return $this->display("index",false);
}
差异数据返回
Array ( [0] => Array ( [id] => 10 [name] => 开始 [num] => 10 ) [1] => Array ( [id] => 112 [name] => 你好 [num] => 9 ) )