$r, 'blue' => $b, 'white' => $w, 'violet' => 0 ); makeViolet($balls); echo $balls['violet']; function makeViolet(&$balls): void{ // 1ケもつくれない if(($balls['red'] == 0 or $balls['blue'] == 0) and ($balls['white'] == 0)){ return; } // 少ない方に全部足してそれが答え if(abs($balls['red'] - $balls['blue']) > $balls['white'] ){ // 宇宙船演算子で比較 $target = $balls['red'] <=> $balls['blue']; if($target == 1){ $target = 'blue'; }else if($target == -1){ $target = 'red'; }else{ return; } $balls['violet'] = $balls["$target"] + $balls['white']; return; } // 全部足して半分にする if(abs($balls['red'] - $balls['blue']) <= $balls['white'] ){ $violets = ($balls['red'] + $balls['blue'] + $balls['white']) / 2; $balls['violet'] = floor($violets); } }