Я googled этот вопрос, я не могу найти точное решение …
У меня есть две переменные …
$s1 = "ABC"; //or "BC" $s2 = "BC"; //or "Bangalore"
Мне нужно сравнить $s1
и $s2
и дать результат как letters which is not present in $s2
eg : "A" // or"C"
Например, мне нужно сравнить $s2
и $s1
и дать результат как letters which is not present in $s1
eg : null // or"angalore"
То, что я пробовал .. Я плюю строки на массив … Используя вложенный цикл, чтобы найти несогласованные буквы … Я написал код более 35 строк. Но никакого результата 🙁 Пожалуйста, помогите мне ……
echo str_ireplace(str_split($s2), "", $s1); // output: A
Здесь вы можете использовать array_diff()
:
function str_compare($str1, $str2) { $str1chars = str_split($str1); $str2chars = str_split($str2); $diff = array_diff($str1chars, $str2chars) return implode($diff); }
Вызывая функцию следующим образом:
$diffchars = str_compare('ABC', 'BC');
Вы получите строку, содержащую символы, которые не отображаются в обеих строках. В этом примере это будет A
, потому что этот символ появляется в $str1
, но не в $str2
.
Вы можете использовать str_split и array_diff как:
<?php $s1 = 'abcedf'; $s2 = 'xzcedf5460gf'; print_r(array_diff(str_split($s1), str_split($s2)));
Используйте array_diff()
:
function str_diff($str1, $str2) { $arr1 = str_split($str1); $arr2 = str_split($str2); $diff = array_diff($arr1, $arr2); return implode($diff); }
Применение:
echo str_diff('BC', 'Bangalore'); // => C echo str_diff('ABC', 'BC'); // => A
Хорошо сделать это
$str1s = "abc"; $str2s = "BCd"; function findNot($str1, $str2, $asArray = false){ $returnValue = array_diff(array_unique(str_split(strtolower($str1))), array_unique(str_split(strtolower($str2)))); if($asArray == false){ return implode($returnValue); }else{ return $returnValue; } } echo findNot($str1s, $str2s); //gives a string echo findNot($str1s, $str2s, true); //gives array of characters
Это позволяет вам возвращать как массив, так и строку.