我会感激一点帮助。我尝试了array_diff()
,交叉组合,但无法获得我预期的回报。
以下是我想要做的一个例子。
第一个数组。
Array
(
[0] => 21
[1] => 2
[2] => 1
[3] => 2
)
第二个数组
Array
(
[0] => 21
[1] => 2
)
使用array_diff(firstarray, secondarray)
我得到以下内容。
Array
(
[2] => 1
)
但我想要的是什么
Array
(
[2] => 1
[3] => 2
)
来自firstarray和secondarray的键不一定相同。
答案 0 :(得分:0)
这个小片段可以帮助您实现您想要的效果。这里我们循环第二个数组,并从第一个数组中删除它找到的每个值的第一个匹配项。
$first = array(0 => 21, 1 => 2, 2 => 1, 3 => 2);
$second = array(0 => 21, 1 => 2);
foreach ($second as $v) {
unset($first[array_search($v, $first)]);
}
循环后$first
的输出:
Array
(
[2] => 1
[3] => 2
)
如果您希望保持$first
数组完好无损,请将其复制到另一个变量中,并将其循环,即$new = $first;
并取消设置$new
而不是$first
。
答案 1 :(得分:0)
function array_true_diff($arrayOne, $arrayTwo = []) {
if (count($arrayOne) < count($arrayTwo)) {
$tmp = $arrayOne;
$arrayOne = $arrayTwo;
$arrayTwo = $tmp;
}
$diffs = [];
foreach ($arrayOne as $key => $value) {
if (!isset($arrayTwo[$key]) || $arrayTwo[$key] !== $value) {
$diffs[$key] = $value;
}
}
return $diffs;
}
print_r(array_true_diff(firstarray, secondarray))
以上功能可以满足您的要求。
答案 2 :(得分:0)
在这种情况下,您可以使用“in_array”检查是否存在,使用“array_search”获取密钥,并使用“unset”从数组中删除元素,如下所示:
$array1 = array(21, 2, 1, 2);
$array2 = array(21, 2);
$result = array();
for ($i=0; $i < count($array1) ; $i++) {
if (in_array($array1[$i], $array2)) {
unset($array2[array_search($array1[$i], $array2)]);
} else {
array_push($result,$array1[$i]);
}
}
,输出结果为:
Array ( [0] => 1 [1] => 2 )
答案 3 :(得分:0)
尝试以下功能:
<servlet>
<servlet-name>NAME</servlet-name>
<servlet-class>MyClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NAME</servlet-name>
<url-pattern>/xx/*</url-pattern>
</servlet-mapping>