Heim > Backend-Entwicklung > PHP-Tutorial > 怀疑:php array_merge_recursive的一个bug

怀疑:php array_merge_recursive的一个bug

WBOY
Freigeben: 2016-06-06 20:40:19
Original
1335 Leute haben es durchsucht

<code>$adiff = json_decode('{"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0}',true);
$diff = json_decode('{"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1}',true);
$adiff = array_merge_recursive($diff,$adiff);
var_dump($adiff);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

理论上应该返回:

<code>array(16) { [28]=> int(1) [29]=> int(1) [20]=> int(1) [31]=> int(1) [32]=> int(1) [33]=> int(1) [34]=> int(1) [35]=> int(1) [36]=> int(0) [37]=> int(0) [38]=> int(0) [39]=> int(0) [40]=> int(0) [41]=> int(0) [42]=> int(0) [43]=> int(0) }
</code>
Nach dem Login kopieren
Nach dem Login kopieren

实际返回:

<code>array(16) { [0]=> int(1) [1]=> int(1) [2]=> int(1) [3]=> int(1) [4]=> int(1) [5]=> int(1) [6]=> int(1) [7]=> int(1) [8]=> int(0) [9]=> int(0) [10]=> int(0) [11]=> int(0) [12]=> int(0) [13]=> int(0) [14]=> int(0) [15]=> int(0) }
</code>
Nach dem Login kopieren
Nach dem Login kopieren

这算不算一个bug?

更新:
这个不算bug,只是手册里面没有对数字键进行merge时会重置说明清楚。

回复内容:

<code>$adiff = json_decode('{"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0}',true);
$diff = json_decode('{"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1}',true);
$adiff = array_merge_recursive($diff,$adiff);
var_dump($adiff);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

理论上应该返回:

<code>array(16) { [28]=> int(1) [29]=> int(1) [20]=> int(1) [31]=> int(1) [32]=> int(1) [33]=> int(1) [34]=> int(1) [35]=> int(1) [36]=> int(0) [37]=> int(0) [38]=> int(0) [39]=> int(0) [40]=> int(0) [41]=> int(0) [42]=> int(0) [43]=> int(0) }
</code>
Nach dem Login kopieren
Nach dem Login kopieren

实际返回:

<code>array(16) { [0]=> int(1) [1]=> int(1) [2]=> int(1) [3]=> int(1) [4]=> int(1) [5]=> int(1) [6]=> int(1) [7]=> int(1) [8]=> int(0) [9]=> int(0) [10]=> int(0) [11]=> int(0) [12]=> int(0) [13]=> int(0) [14]=> int(0) [15]=> int(0) }
</code>
Nach dem Login kopieren
Nach dem Login kopieren

这算不算一个bug?

更新:
这个不算bug,只是手册里面没有对数字键进行merge时会重置说明清楚。

手册中提到了:

If, however, the arrays have the same numeric key, the later value will not overwrite the original value, but will be appended.

如果两个数组存在相同的数字键名,则会在数组最后新建一个索引(虽然手册中没提到索引会重置)。

这种情况下推荐使用array_replace_recursive(PHP≥5.3)。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage