尝试一些自定义数组差异,例如 PHP 中的方法

trying some customize array difference like approach in PHP

$a = ["a","b","c","a","b"];
$b = ["a","c"];
array_diff($a,$b);
//output will be [b,b]

但这不是真正的区别它也可以是

//output [b,a,b]  <- this is what I am trying to achieve

我尝试了 foreach 循环和 for 循环,但未能得到它...

我试过的每个例子

$a = ["a","b","c","a","b"];
$b = ["a","c"];
echo array_diff_custom($a,$b),"<br>";

function array_diff_custom($a,$b){
$result =0;
    foreach($a as $key=>$val){
        foreach($b as $key2=>$val2){
                  if($val == $val2){
                     unset($a[$key]);
                   }         

        }

    }
$result = count($a);
return $result;
}


echo array_diff_custom($b,$a);

for循环例子,我试过了

$a = ["a","b","c","a","b"];
$b = ["a","c"];
echo array_diff_custom($a,$b),"<br>";

function array_diff_custom($a,$b){
$result =0;
    for($i=0;$i<count($a);$i++){
        for($j=0;$j<count($b);$j++){
                 //echo $a[$i]."-".$b[$j]."<br>";
                  if($a[$i] == $b[$j]){
                     unset($a[$i]);
                   }         

        }

    }
$result = count($a);
return $result;
}


echo array_diff_custom($b,$a);

我在我创建的示例函数中使用 count($resut),但您可以简单地 return $a 并且可以 print_R(array_Diff_custom) 检查输出...

您可以只从第一个数组中取消设置出现在第二个数组中的项目一次

function array_diff_custom($a,$b){
  foreach($b as $x){
    if($k = array_keys($a, $x)) {
        unset($a[$k[0]]);
    }
  }
  return $a;
}

print_r(array_diff_custom($a,$b)); 

demo