2012-11-14 3 views
0

codeigniter를 사용하여 다양한 db 테이블에서 데이터를 얻고 있습니다. 재미있는 점은이 코드 위에있는 10 줄은 이름이 있고 다른 모든 배열이 예상대로 작동한다는 개념을 테스트하고 있다는 것입니다. 이제는 db에서 나온 데이터로 같은 것을 시도하고 있습니다. 작동하지 않는 것 같습니다.이상한 array_diff 결과

코드

  echo "a:";print_r($CITB); 
      echo "<br />b:";print_r($PRB); 
      echo "<br />c:";print_r($TB); 
      echo "<br />d:";print_r($TRB); 


      $a = $CITB; //I know this is empty 
      $b = array_diff($PRB,$a); 
      $c = array_diff($TB, $b, $a); 
      $d = array_diff($TRB, $c, $b, $a); 

      echo "<br /><br />a:";print_r($a); 
      echo "<br />b:";print_r($b); 
      echo "<br />c:";print_r($c); 
      echo "<br />d:";print_r($d);die(); 

결과

a: 
b:Array ([0] => 8 [1] => 52) 
c:Array ([0] => 8 [1] => 52) 
d: 

a: 
b: 
c: 
d: 

예상 결과

a:Array() 
b:Array ([0] => 8 [1] => 52) 
c:Array() 
d:Array() 

답변

1

인수는 array_d하기 iff는 배열이어야합니다. 그렇지 않으면 null을 반환합니다.

print_r($CITB);Array()으로 인쇄되지 않습니다. 즉, 빈 배열이 아니며 빈 문자열 일 가능성이 높습니다. 따라서 은 $bnull이됩니다.

오류보고를 켜면 몇 가지 경고가 표시됩니다. 그렇지 않으면 print_r 대신 var_dump을 사용하여 변수 유형을 확인하십시오.

+0

아, 맞습니다. 왜냐하면 저는 db에 데이터가 있는지 여부를 확인하고 $ CITB를 변수로 정의하지 않아서 빈 문자열로 끝나기 때문입니다. 그 빠른 팁 주셔서 감사합니다! – Ando