array_diff返回一个空数组,我的代码中有错误吗?

时间:2014-02-05 16:45:09

标签: php arrays

我有问题,此代码中的array_diff无效并返回空数组

for ($baris = 0; $baris < count($ala[0]); $baris++) {
    $satu[]= $ala[0][$baris];
    $dua[]= $ala[1][$baris];    
}

for ($baris=0; $baris < $jumlah ; $baris++) { 
    $satusatu[] = $ala[0][$baris];
    $duadua[] = $ala[1][$baris];     
}

$z = array_diff($satu, $satusatu);

print_r($z);

4 个答案:

答案 0 :(得分:0)

看起来像count($ala[0]) == $jumlah所以循环运行相同的迭代,并且您对两个数组执行完全相同的赋值,因此没有区别(空数组):

$satu[]= $ala[0][$baris];
//same as
$satusatu[] = $ala[0][$baris];

答案 1 :(得分:0)

array_diff(see here)如果比较的数组相等,则返回一个空数组...

答案 2 :(得分:0)

首先在array_diff行之前回显$ satu和$ satusatu。

这就是你需要调试的方式

答案 3 :(得分:0)

如果这是您的整个PHP代码,那么您在$satu循环中定义for,这意味着 - 由于变量作用域在PHP中的工作方式 - $satu不存在在for循环之外。 $satusatu也是如此。当您在调用array_diff时尝试引用它们时,这两个数组都是空数组,因为它们已超出范围。因此,当您在这两个数组上调用array_diff时,结果将是两者之间没有差异。

有关PHP中变量范围的更多信息可以是found here