这是一个如此简单的问题,但PHP文档并没有解释为什么会发生这种情况.
我有这个代码:
var_dump($newattributes); var_dump($oldattributes);
var_dump(array_diff($newattributes, $oldattributes));
Run Code Online (Sandbox Code Playgroud)
为简单起见,我将省略我实际使用的大部分结构(因为每个元素长117个元素)并切入案例.
我有一个叫做的数组$newattributes,看起来像:
array(117){
// Lots of other attributes here
["deleted"] => int(1)
}
Run Code Online (Sandbox Code Playgroud)
而另一个$oldattributes看起来像:
array(117){
// Lots of other attributes here
["deleted"] => string(1) "0"
}
Run Code Online (Sandbox Code Playgroud)
哪个看起来不一样吧?根据array_diff:没有.我得到的输出array_diff是:
array(0) { }
Run Code Online (Sandbox Code Playgroud)
我已阅读文档页面,但它说:
当且仅当(字符串)$ elem1 ===(字符串)$ elem2时,两个元素被认为是相等的.用文字表示:当字符串表示相同时.
而且我不确定"1"如何能够对等于"0".
所以我看到一些警告,array_diff我没有考虑到?
Don*_*eba 11
问题可能在于您正在使用关联数组:您应该尝试将以下内容用于关联数组:array_diff_assoc():
<?php
$newattributes = array(
"deleted" => 1
);
$oldattributes = array(
"deleted" => "0"
);
$result = array_diff_assoc($newattributes, $oldattributes);
var_dump($result);
?>
Run Code Online (Sandbox Code Playgroud)
结果:
array(1) {
["deleted"]=>
int(1)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |