2012-06-23 3 views
0

코드 명에서 컨트롤러 파일에서 모델로부터 데이터를 가져옵니다. 결과를 확인하기 위해 foreach 루프를 사용하는데 문제가 없습니다. 하지만 foreach를 사용하는 대신 변수가 데이터베이스 결과 배열에 있는지 여부를 제어하기 위해 in_array()를 사용하려고합니다. 코드는 다음과 같습니다.foreach 루프 대신 in_array()를 어떻게 사용할 수 있습니까?

function _remap($method,$params = array()){ 

//in construct, I use $this->model 
if (isset($params[0])) { 

    $this->db->distinct('*****'); 
    $this->db->from('*****'); 
    $this->db->where('****',****); 

    $query = $this->db->get(); 

    if (in_array($params[0],$query->results())) { 
     echo "in_array works"; 
    } 
} 

하지만 아무 것도 울리지 않습니다. 어떻게해야합니까? 고마워요.

+0

'.get()'은 [객체 또는 배열]을 반환합니다 (http://codeigniter.com/user_guide/database/active_record.html#select) ? –

+0

쿼리 결과를 객체 배열로 반환합니다. 'result_array()'를 사용하여 순수한 배열을 반환 한 다음'in_array'를 사용하십시오. – verisimilitude

+0

객체 반환 ... 오 ... 객체에서 객체를 만들 수 없습니까? – kalaba2003

답변

2

manual에 따르면 result_array()을 사용할 수 있습니다. 그렇지 않으면 객체를 다시 얻게됩니다. 물론 객체에 in_array을 사용할 수 없습니다. 당신이

if (in_array($params[0], $query->first_row('array')) { 
    // ... 
+1

이것이 왜 왜곡되었는지 궁금하네요? 어쨌든, 매개 변수가 쿼리에 넣는 것이 아닌가? –

+0

그래, 나도 궁금해. 그러나 당신은 도울 수 있고 정의를 만들 수 있습니다 :)! 나는 codeigniter에 대해 전혀 몰라, 나는 단지 나의 일반적인 프로그래밍 감각 (그리고 구글)을 사용했다. –

1

에 코드를 변경 할 수있는 설명서에 따라 또한

in_array은 단지
예를 들어, 값 목록에서 값을 확인하기 위해 사용되는 배열 ("Mac", "NT", "Irix", "Linux");

in_array은 개체 배열을 반환하기 때문에 사용자 상황에 맞지 않습니다.

0

원하는 작업을 수행하고 참 또는 거짓을 반환하는 도우미 메서드를 작성하는 것이 좋습니다. 그것을하는 방법에 대한 정보는 찾을 수 있습니다 here