我使用codeigniter从各种db表中获取一些数据。有趣的是,这个代码上面的10行我正在测试这个概念与其他一些名称和一切按预期工作的数组。现在我正在尝试使用我的数据库中的数据做同样的事情,但它似乎没有用。
代码
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()
答案 0 :(得分:1)
array_diff的参数应该是数组。否则它将返回null
。
在你的情况下,print_r($CITB);
不会打印为Array()
,这意味着它不是一个空数组,很可能是一个空字符串。因此$b = array_diff($PRB,$a);
会导致$b
成为null
。
如果您打开错误报告,则会看到一些警告。否则,请使用var_dump
代替print_r
来查看变量的类型。