[英]How can I simplify this code so it doesn't have so many if else if statements?
I'm pretty sure this can be simplified but I'm not exactly sure how. 我很确定这可以简化,但是我不确定如何做到。 Any help would be greatly appreciated!
任何帮助将不胜感激!
foreach($color_count as $k => $v) {
$index = count(json_decode($k, true));
if($v < $max_color_count[$index]) {
$diff = $max_color_count[$index] - $v;
if($k == '["White","Blue","Black","Red","Green"]') { $this->add($filteredCards['White-Blue-Black-Red-Green'], $diff); }
else if($k == '["White","Blue","Black","Red"]') { $this->add($filteredCards['White-Blue-Black-Red'], $diff); }
else if($k == '["White","Blue","Black","Green"]') { $this->add($filteredCards['White-Blue-Black-Green'], $diff); }
else if($k == '["White","Blue","Red","Green"]') { $this->add($filteredCards['White-Blue-Red-Green'], $diff); }
else if($k == '["White","Black","Red","Green"]') { $this->add($filteredCards['White-Black-Red-Green'], $diff); }
else if($k == '["Blue","Black","Red","Green"]') { $this->add($filteredCards['Blue-Black-Red-Green'], $diff); }
else if($k == '["White","Blue","Black"]') { $this->add($filteredCards['White-Blue-Black'], $diff); }
else if($k == '["White","Blue","Red"]') { $this->add($filteredCards['White-Blue-Red'], $diff); }
else if($k == '["White","Blue","Green"]') { $this->add($filteredCards['White-Blue-Green'], $diff); }
else if($k == '["White","Black","Red"]') { $this->add($filteredCards['White-Black-Red'], $diff); }
else if($k == '["White","Black","Green"]') { $this->add($filteredCards['White-Black-Green'], $diff); }
else if($k == '["White","Red","Green"]') { $this->add($filteredCards['White-Red-Green'], $diff); }
else if($k == '["Blue","Black","Red"]') { $this->add($filteredCards['Blue-Black-Red'], $diff); }
else if($k == '["Blue","Black","Green"]') { $this->add($filteredCards['Blue-Black-Green'], $diff); }
else if($k == '["Blue","Red","Green"]') { $this->add($filteredCards['Blue-Red-Green'], $diff); }
else if($k == '["Black","Red","Green"]') { $this->add($filteredCards['Black-Red-Green'], $diff); }
else if($k == '["White","Blue"]') { $this->add($filteredCards['White-Blue'], $diff); }
else if($k == '["White","Black"]') { $this->add($filteredCards['White-Black'], $diff); }
else if($k == '["White","Red"]') { $this->add($filteredCards['White-Red'], $diff); }
else if($k == '["White","Green"]') { $this->add($filteredCards['White-Green'], $diff); }
else if($k == '["Blue","Black"]') { $this->add($filteredCards['Blue-Black'], $diff); }
else if($k == '["Blue","Red"]') { $this->add($filteredCards['Blue-Red'], $diff); }
else if($k == '["Blue","Green"]') { $this->add($filteredCards['Blue-Green'], $diff); }
else if($k == '["Black","Red"]') { $this->add($filteredCards['Black-Red'], $diff); }
else if($k == '["Black","Green"]') { $this->add($filteredCards['Black-Green'], $diff); }
else if($k == '["Red","Green"]') { $this->add($filteredCards['Red-Green'], $diff); }
else if($k == '["White"]') { $this->add($filteredCards['White'], $diff); }
else if($k == '["Blue"]') { $this->add($filteredCards['Blue'], $diff); }
else if($k == '["Black"]') { $this->add($filteredCards['Black'], $diff); }
else if($k == '["Red"]') { $this->add($filteredCards['Red'], $diff); }
else if($k == '["Green"]') { $this->add($filteredCards['Green'], $diff); }
}
}
It looks like your $k
is a JSON encoded array so: 看来您的
$k
是JSON编码的数组,因此:
$array = json_decode($k);
$newKey = implode('-', $array);
$this->add($filteredCards[$newKey], $diff);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.