2017-12-07 3 views
0

이 if/elseif 문이 있습니다. $ DiscountDescription이 비어 있지 않은 경우, 다음과 같이 검색합니다. "e", "E", "A"가 있으며 12 자 또는 10자를가집니다. 두 개의 다른 시나리오는 두 개의 대시가있는 18 자와 모두 숫자 인 9 자입니다.PHP 문자열의 시작 문자와 문자열의 길이를 결정한 다음 결과에 따라 변수에 값을 할당하십시오.

코드는 나에게 맞는 것처럼 보이지만 작동하지 않는 것 같습니다. 어떤 아이디어?

$DiscountDescription = $_order->getDiscountDescription(); 

if ($DiscountDescription != '') { 
    if (substr($DiscountDescription,0,1 == "e") && strlen($DiscountDescription == 12)){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (substr($DiscountDescription,0,1 == "E") && strlen($DiscountDescription == 10)){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (substr($DiscountDescription,0,1 == "A") && strlen($DiscountDescription == 10)){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (strlen($DiscountDescription == 18) && substr_count($DiscountDescription,'-' == 2)){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (strlen($DiscountDescription == 9) && ctype_digit($DiscountDescription)){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 

    //$_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
} 
+4

'strlen ($ DiscountDescription == 10)'__ 반드시 be__'strlen ($ DiscountDescription) == 10'입니다. __same__ for'substr_count' –

+1

@u_mulder 그리고'substr()'... – jeroen

+0

당신은 당신의 모든 ==를 함수 대신에 넣는 대신에 substr_count ($ var, "-") == 2. 및 strlen ($ var) == 12 – hunijkah

답변

0

누군가 다른 사람이 당신이 길이 검사에서 비교를하고있는 것처럼 보인다고해서 작동하지 않을 것이라고 말한 것처럼. 너는 길이를 얻고 그것을 정수와 비교하기를 원한다.

== 대신에 ===이라는 엄격한 비교를 사용하는 것이 가장 좋습니다.

관련 문제