첫 번째 문자열의 모든 ( $str1
) 문자가 두 번째 문자열 ( $str2
) 에 있는지 확인하려고합니다 . 의 모든 $str1
문자가에있는 $str2
경우 "Bingo!"를 표시해야하며 그렇지 않은 경우 "Nope :("을 표시해야합니다.
문제에 직면 : 일부 예제에서는 내 코드가 올바르게 작동하지만 전부는 아닙니다. 예를 들어,$str1
및$str2 = "jenny"
이면 코드가 대신 "Bingo!"를 표시해야 할 때 "Nope :("를 표시합니다.
도움이 필요합니다 . 코드가 어디에서 잘못되었는지, 왜 이런 일이 발생하는지 파악하는 데 도움이 필요합니다. 제안 된 수정 사항을 깊이 감사하겠습니다.
이것은 자체 제출 PHP 스크립트입니다. $str1
및 모두에 대한 입력 유형 $str2
은 "텍스트"입니다.
<?php
if(!empty($_POST["send"])){ //so that code executes when submit button with the name "send" is clicked
$str1 = $_POST["str1"];
$str2 = $_POST["str2"];
$ch_check = [];
for($i = 0; $i <strlen($str1); $i++){
$ch = $str1[$i];
for($j = 0; $j <strlen($str2); $j++){
if($ch == $str2[$j]){
$ch_check[] = $ch;
}
}
}
//echo "<pre>";
//var_dump($ch_check);
//echo "</pre>";
if(count($ch_check) == strlen($str1)){
echo "Bingo!";
}else{
echo "Nope :(";
}
}
?>
값을 확인하면 $ch_check
6 자 배열이 표시됩니다. 결과적으로 크기는 "text"의 문자열 길이 인 4와 같지 않은 6입니다. 이것은 문자 "t"가 원래 문자열에서 두 번 발생하여 두 번 일치하기 때문에 발생합니다. "t"를 "c"로 변경하면 코드가 작동합니다 .
이것은 break
일단 일치가 이루어지면 루프에서 나가면 쉽게 고칠 수 있습니다 .
if($ch == $str2[$j]){
$ch_check[] = $ch;
break;
}
이를 수행하는 또 다른 방법은 두 문자열의 모든 고유 문자를 가져 와서 공통된 문자를 찾은 다음 $str1
.
$str1 = 'text';
$str2 = 'text';
$str1chars = array_unique(str_split($str1));
$str2chars = array_unique(str_split($str2));
$matches = array_intersect($str1chars, $str2chars);
if(count($str1chars) === count($matches)){
echo "Bingo!";
}else{
echo "Nope :(";
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다