PHP不用第三个参数实现两个数组元素互换

看到一题面试题,有$a 和$b两个数组,要求不用第三个参数实现$a和$b的元素互换;

如果$a 和 $b 是number类型,那么简单的通过php计算即可实现互换:


例子;

$a += $b;
$b = $a - $b;
$a = $a - $b;

如果$a和$b是整型,可用位运算:

a ^= b;
b ^= a;
a ^= b;

$a和$b换成了数组类型之后,利用同样的原理,使用数组拼接:

$a = [1,2,3,4];
$b = [4,5,6];
//若$a和$b的元素互不相同没有重复的,使用array_diff即可
//$a + $b 数字索引会被覆盖,array_merge只覆盖string类型的key
$a = array_merge($a, $b);
$b = array_diff($a, $b);
$a = array_diff($a, $b);
//若$a和$b长度一致,借助于一些数组的特殊函数,
//如array_combine实现互换则更加方便
$a = array_combine($a, $b);
$b = array_keys($a);
$a = array_values($a);
//$a, $b 任意, 使用array_slice 截取
$a = array_merge($a, $b);
$b = array_slice($a, 0, -count($b));
$a = array_slice($a, count($b));

最后来张图片(阿里云备案免邮寄承诺书)待会要用到,和主题无关,请忽略:

承诺书

Leave a Reply

Your email address will not be published. Required fields are marked *