我有两个数组:
(
[lineCode] => C
[serviceRequest] => Ext, Warr auth.#19091100102 for $650.64 to be paid by c/card(fax#817-785-6700). Cust owes balance
[skillCode] => 90SB
[opCode] => 90SB
[jobType] => CUSTOMER
[techNo] =>
[lineStatus] => C
)
(
[id] => 755350
[rid] => 252178
[lineCode] => C
[serviceRequest] => Ext, Warr auth.#19091100102 for $650.64 to be paid by c/card(fax#817-785-6700). Cust owes balance
[skillCode] => 90SB
[opCode] => 90SB
[jobType] => CUSTOMER
[techNo] =>
[lineStatus] => W
[timeA] => 1575497139
[timeC] => 0
)
当我执行
$diff = array_diff($arry1, $arry2);
时,它没有发现lineStatus
有什么不同。难道是因为服务请求行有特殊字符?虽然作为测试,我将两行都设置为空白,但仍然看不出有什么区别。
任何帮助都会很棒。迷惑了一天。
更新更多信息 由于这是通过多个数组的较大循环的一部分,因此上面这个之前的差异检查如下:
$arry1= Array
(
[lineCode] => B
[serviceRequest] =>
[skillCode] => 15
[opCode] => 15
[jobType] => CUSTOMER
[techNo] => A05
[lineStatus] => C
)
$arry2= Array
(
[id] => 755362
[rid] => 252184
[lineCode] => B
[serviceRequest] =>
[skillCode] => 15
[opCode] => 15
[jobType] => CUSTOMER
[techNo] => A05
[lineStatus] => W
[timeA] => 1575504138
[timeC] => 0
)
$diff= Array
(
[lineStatus] => C
)
差异代码是
$diff=array_diff($arry1,$arry2);
如果这个方法可以正常工作,为什么下一个就不行呢?
为什么它没有按照你最初的方式找到它......?
array_diff()
不关心键值组合,它只比较所比较的不同数组中的 values。
为了更好地理解发生的情况:如果在更新的数据中将数组元素
[dummy] => "C"
引入到 $arry2
中,您将不再将 [lineStatus] => "C"
返回到 $diff
中。因为值 C
现在可以在 $arry1
和 $arry2
中找到。
看看这个演示