2012-11-14 189 views
0

我使用codeigniter從各種數據庫表中獲取一些數據。有趣的是,這個代碼上面的10行我正在測試一些其他數組的名稱和一切按預期工作的概念。現在,我正在嘗試與我的數據庫中的數據相同的事情,它似乎並沒有工作。奇怪的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()這意味着它不是一個空數組,很可能是一個空字符串。所以$b = array_diff($PRB,$a);結果$bnull

如果您打開錯誤報告,您應該會看到一些警告。否則使用var_dump而不是print_r來查看變量的類型。

+0

哦,你是對的,那是因爲我'如果'檢查數據庫中是否有數據,並且沒有將$ CITB定義爲變量,所以它最終爲一個空字符串。感謝您的快速提示! – Ando