1
두 개의 부울 변수 $products_changed
및 $address_changed
이 있습니다.switch 문에서 사용할 이항 연산자
가 나는 상태 각각에 대한 시각적 표시기 표시하려면 :
- 모두
- 만
products_changed
이 참 참을 - 만
address_changed
은 현재 난
사실이다 하는 중 :
if ($products_changed && $address_changed) //if both have changed
{
//visual indicator for both
}
elseif ($products_changed) //only products changed
{
//visual indicator for products changed
}
elseif ($address_changed) //only address changed
{
//visual indicator for address changed
}
내가 적용 할 수있는 논리 연산 연산자가 필요하며 두 연산이 모두 true이거나 둘 다 false 인 경우 결과에 포함됩니다. 그러나 하나만 사실이라면 - 나는 어느 것을 (첫 번째인지 두 번째인지) 알아야합니다.
내 코드를 리팩토링 할 방법이
:const BOTH_CHANGED = 1, PRODUCTS_CHANGED = 2, ADDRESS_CHANGED = 3;
//The numbers 1,2,3 are arbitrary, could be any numbers.
$visual_indicator = $products_changed **SOME_OPERATOR** $address_changed;
switch($visual_indicator) {
case BOTH_CHANGED: //display visual indicator for both changed
break;
case PRODUCTS_CHANGED: //display visual indicator for products changed
break;
case ADDRESS_CHANGED: //display visual indicator for address changed
break;
}
나는 내가 할 수있는 실현 :
$visual_indicator = (int)$products_changed * 10 + (int)$address_changed;
//11 will be both changed, 10 will be products changed, 1 will be address changed
그러나 나는 더 우아하고 가능한 기본 운영자를 찾고 있어요. 이것은 코드 중복성과 가독성을 줄이는 데 중요합니다. 물론 이것은 내 코드의 단순화 된 버전이므로 내 프로젝트에서는 이것이 더 의미가 있습니다.
도움 & 아이디어를 주시면 감사하겠습니다. 감사.
'xor'? "하나 또는 다른 하나는 아니지만 둘 다"당신에게 "단 하나가 변경되었습니다"줄 것입니다. –
@MarcB하지만 * 어느 것이 문제입니까? – Yani