今天在一次采访中,我得到了以下问题,无需使用任何内置函数,例如in_array等。我能够解决该程序,但他们告诉我有更好的方法,他们告诉我总代码只是最多7行。所以任何人都可以告诉我任何比这更好的方法: -
<?php
$a = array(1,3,5,2,1,5,11,16);
$b = array(1,4,3,11,12,5,7,18);
$final = [];
for($i=0;$i<count($a);$i++){
$flag = 0;
if($i==0){
$final[] = $a[$i];
} else {
for($j=0;$j<count($final);$j++){
if($a[$i] == $final[$j]){
$flag = 1;
}
}
if($flag==0){
$final[] = $a[$i];
}
for($k=0;$k<count($final);$k++){
if($b[$i] == $final[$k]){
$flag = 1;
}
}
if($flag==0){
$final[] = $b[$i];
}
}
}
echo '<pre>';
print_r($final);
结果将是包含两个唯一数组的最终数组,例如
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 5 [4] => 2 [5] => 11 [6] => 16 [7] => 18 )
答案 0 :(得分:2)
以下是如何在不使用内置函数的情况下执行此操作:将值作为键收集(因此它们是唯一的),然后将这些键作为值放回到最终数组中:
$a = array(1,3,5,2,1,5,11,16);
$b = array(1,4,3,11,12,5,7,18);
foreach($a as $v) $keys[$v] = 1;
foreach($b as $v) $keys[$v] = 1;
foreach($keys as $k => $v) $final[] = $k;
echo '<pre>';
print_r($final);
在eval.in上看到它。
答案 1 :(得分:1)
只需将密钥设置为值,它们就会覆盖。如果数组的长度相同:
/Users/<user_name>/Library/Android/sdk/
如果没有,则为每个阵列执行:
foreach($a as $k => $v) {
$final[$v] = $v;
$final[$b[$k]] = $b[$k];
}
订单和密钥不一样,但并未作为要求说明。