2011-08-24 5 views
0

codeigniter 폼 유효성 검사를 사용하고 있습니다. 사용하는 양식 오류를 표시하려면이 구문을 일반 PHP로 변환하는 방법 else

$this->data['message'] = (validation_errors() ? 
    validation_errors() : 
    ($this->auth_lib->errors() ? 
     $this->auth_lib->errors() : 
     $this->session->flashdata('message'))) 

이 구문을 이해하지 못합니다. 나는 그것이 else 문이라고 생각합니다. 이해하기가 매우 어렵습니다.

아무도 정상적인 else 문으로 변환 하시겠습니까? 지금은 오류 메시지 형식 변경하기 위하여려고하고 있기 때문에

:

$this->message->set_error($msg=array('Test 1','Test 2')); 
$message=$this->message->get_message(); 
$this->data['message']=$message; 

사람을, 구문을 단순화하십시오. 감사.

+1

이것은 CI가 아니며 PHP 자체 : [ternary operator] (http://www.php.net/manual/en/language.operators. comparison.php # language.operators.comparison.ternary) – NullUserException

+2

이것은 매우 짧은 것이 아닌 한 삼중 연산자를 싫어하는 이유입니다. – Matt

+1

삼항 조건부 연산자를 사용하기 시작하면이를 사랑하는 법을 배웁니다! :디 – zombat

답변

6

? B : C == 경우 (A) {B} 다른 {c}을

if (validation_errors()) 
{ 
    $this->data['message'] = validation_errors(); 
} 
else if ($this->auth_lib->errors()) 
{ 
    $this->data['message'] = $this->auth_lib->errors(); 
} 
else 
{ 
    $this->data['message'] = $this->session->flashdata('message'); 
} 
4
$this->data['message'] = (validation_errors() ? validation_errors() : ($this->auth_lib->errors() ? $this->auth_lib->errors() : $this->session->flashdata('message')))

되는 다중 작업 원 당량

if (validation_errors()) 
    $this->data['message'] = validation_errors(); 
elseif ($this->auth_lib->errors()) 
    $this->data['message'] = $this->auth_lib->errors(); 
else 
    $this->data['message'] = $this->session->flashdata('message'); 
2

당신이 ternary operators을 사용하고 게시 코드입니다. 그것들은 매우 편리 할 수 ​​있지만 그 중 몇 개를 중첩하는 경우 때때로 혼란 스러울 수 있습니다. 다음은 삼항 연산자없이 작성된 동등 물입니다 ...

if(validation_errors()) 
    { 
     $this->data['message'] = validation_errors(); 
    } 
    else 
    { 
     if($this->auth_lib->errors()) 
     { 
      $this->data['message'] = $this->auth_lib->errors(); 
     } 
     else 
     { 
      $this->data['message'] = $this->session->flashdata('message'); 
     } 
    } 
관련 문제