我想比较两个字符串(variable1
和variable2
),并且想从两个字符串中删除匹配的字符(仅一次)。
例如:Variable1 : Apple
,Variable2 : Ball
我尝试使用
array_diff(str_split('ball'), str_split('apple'))
但我只有
b (已删除所有匹配的字符。)
预期输出为
- bl (从第二个字符串中删除字母A,L(仅一次)。)
- ppe (从第一个字符串中删除字母A,L(仅一次)。)
如何只删除一次字符?
答案 0 :(得分:2)
您需要使用 A B C D
A 0 0 3 3
B 0 0 3 3
C 3 3 0 0
D 3 3 0 0
来解决此问题,如下所示:-
foreach()
答案 1 :(得分:0)
您可以通过for-each进行处理
$a = 'ball';
$b = 'apple';
$arr1 = str_split($a);
$arr2 = str_split($b);
$firstArr = ( count($arr1) > count($arr2) ) ? $arr2 : $arr1;
$secondArr = ( count($arr1) < count($arr2) ) ? $arr2 : $arr1;
$objSecondArray = [];
$res = [];
foreach ($secondArr as $value) {
$objSecondArray[$value] = 1;
}
foreach( $firstArr as $val ){
if(array_key_exists($val, $objSecondArray) && $objSecondArray[$val] == 1) {
$objSecondArray[$val] = null;
continue;
}
$res[] = $val;
}
print_r($res);