2 つの文字列セットに同じ文字が含まれているかどうかを判断するにはどうすればよいですか?
$a=2344;//メイン文字列、固定値。
//以下は可変変数です
If $b=12;//$a の文字列に 1 と 2 が含まれているかどうかを判定し、判定後の結果が false であるかどうかを判定します
If $b=22;// かどうかを判定します文字列 $a には 2 が 2 つ含まれます。判定後の結果は 2 だけです。False
if $b=234;//文字列 $a に 2、3、4 が含まれるかどうかを判定します。判定後の結果は $a になります。 all in $a, true
if $b=324;//$a の文字列に 3, 2, 4 が含まれるかどうかを判定します。判定後の結果 $a にはすべてが含まれます, true
if $b=4432;/ /$a 文字列に 4、4、3、2 が含まれるかどうかを判定します。判定後の結果は、$a にそれらがすべて含まれる、true
if $b=4444;//$a 文字列に 4 が含まれるかどうかを判定します4s, .判定後の結果 $a には 4 が 2 つだけあり、 false
if $b
if $b
if $b
... 後で必要になる
がたくさんあります判定結果は上記の通りです。
判決文の書き方は?
------解決策---------
$a = '2344'; $d = array('12', '22', '234', '324', '4432', '4444'); $a = count_chars($a, 1); foreach($d as $b) { $t = count_chars($b, 1); $f = 0; if(array_keys(array_intersect_key($t, $a)) == array_keys($a)) $f = 1; printf("b = %s %s\n", $b, $f ? '真' : '假'); }
b = 12 假 b = 22 假 b = 234 真 b = 324 真 b = 4432 真 b = 4444 假
If $b=4444;//$a 文字列に 4 が 4 つ含まれるかどうかを判定します。判定後の結果 $a には 4 が 2 つしかなく、false
このルールは不適切と思われます
------解決策---------
$a='5415'; $a=str_split($a); $a=array_count_values($a); $b='514'; $b=str_split($b); $b=array_count_values($b); $result=true; foreach($b as $k=>$v){ if(!isset($a[$k]) OR $a[$k]<$v){ $result=false; break; } } var_dump($result);