这是一个简单的问题,但
PHP文档并不能解释为什么会发生这种情况.
我有这个代码:
var_dump($newattributes); var_dump($oldattributes); var_dump(array_diff($newattributes,$oldattributes));
为了简单起见,我将省略我实际使用的结构的大部分(因为每个元素都是117个元素),而是切合实际.
我有一个名为$newattributes的数组,如下所示:
array(117){ // Lots of other attributes here ["deleted"] => int(1) }
另一个叫$oldattributes,看起来像:
array(117){ // Lots of other attributes here ["deleted"] => string(1) "0" }
哪个看起来不一样?根据array_diff:否.从array_diff得到的输出是:
array(0) { }
我已经阅读了文档页面,但是它说:
Two elements are considered equal if and only if (string) $elem1 ===
(string) $elem2. In words: when the string representation is the same.
而且我不知道“1”如何对等于“0”.
所以我看到一些关于array_diff的警告我没有考虑到
问题可能在于您正在使用关联数组:您应该尝试使用以下关联数组:
array_diff_assoc():
原文链接:https://www.f2er.com/php/133032.html<?PHP $newattributes = array( "deleted" => 1 ); $oldattributes = array( "deleted" => "0" ); $result = array_diff_assoc($newattributes,$oldattributes); var_dump($result); ?>
结果:
array(1) { ["deleted"]=> int(1) }