質問: PHPの質問です。 ●$a~$fには、"あ","い","う","え","お"の文字が 一文字ずつランダムに格納されます。 ●$a~$fは、0か1の決められた値を持っています。
回答: > ●$a~$fには、"あ","い","う","え","お"の文字が > ●$a~$fは、0か1の決められた値を持っています。 変数は、同時に別の値を持つ事が出来ません。 また、似た様な意味を別の変数にすると取り扱いが面倒になるだけなので、通常は配列に収めます。 例えば以下の様にします。 $chars = array( 'a'=>'い', 'b'=>'え', 'c'=>'い', 'd'=>'あ', 'e'=>'あ', 'f'=>'い' ); $vals = array( 'a'=>1, 'b'=>0, 'c'=>1, 'd'=>1, 'e'=>0, 'f'=>1 ); キーを共通にしておく事で、処理が楽になります。 文字は違っても「合計する」処理は同じなので、結果も配列に収めるのが適当でしょう。 $results = array(); > 各値が > $a=>1 上記の様に配列のキーと値を示すのに => を使うので、この様に示されると混乱の素となりそうです。 > 同じ文字同士の値を足して、各文字ごとの値を表出するには 思った事がそのままできる魔法は無いので、地道にやりたい事をプログラムする必要があります。 通常は、やりたい事を詳しく文章にしたら、それを順に PHPスクリプトに置き換えていけば大方は何とかなります。 例えば... 基になる配列の端から順に全てを処理する際は foreach() を使うのが普通です。 foreach ($chars as $k=>$c) { } キーも取り出す事が出来ますから、それを使って $val から各値を取り出す事が可能です。 $vals[$k] 同じ文字を判別して...という処理も出来ますが、文字毎に同じ所へ結果を残すという様にしておけば(その為に $results を用意した)判別そのものが不要です。 $results[$c] = ($results[$c] ?? 0) + $vals[$k]; __別の意味で判別はしてるけど (参考) https://www.php.net/manual/ja/language.operators.comparison.php#lan...