我有问题,此代码中的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);
答案 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 。