【发布时间】:2017-12-31 08:07:58
【问题描述】:
所以我有以下 2 个数组,键为 2016 和 2017
array(2) {
[2016]=>
array(11) {
["id"]=>
string(1) "0"
[0]=>
string(1) "0"
["user_id"]=>
string(1) "0"
["entry_id"]=>
int(0)
["user_name"]=>
string(0) ""
[3]=>
string(0) ""
["action"]=>
string(11) "banner view"
[4]=>
string(11) "banner view"
["entry_details"]=>
string(0) ""
["created"]=>
string(4) "2016"
["total"]=>
int(0)
}
[2017]=>
array(11) {
["id"]=>
string(1) "0"
[0]=>
string(1) "0"
["user_id"]=>
string(1) "0"
["entry_id"]=>
int(0)
["user_name"]=>
string(0) ""
[3]=>
string(0) ""
["action"]=>
string(11) "banner view"
[4]=>
string(11) "banner view"
["entry_details"]=>
string(0) ""
["created"]=>
string(4) "2017"
["total"]=>
int(0)
}
}
array(1) {
[2017]=>
array(30) {
["id"]=>
string(2) "52"
[0]=>
string(2) "52"
["user_id"]=>
NULL
[1]=>
NULL
["entry_id"]=>
string(1) "2"
[2]=>
string(1) "2"
["user_name"]=>
NULL
[3]=>
NULL
["action"]=>
string(11) "banner view"
[4]=>
string(11) "banner view"
["entry_details"]=>
string(4) "null"
[5]=>
string(4) "null"
["entry_type"]=>
string(6) "banner"
[6]=>
string(6) "banner"
["created"]=>
string(19) "2017-06-21 10:25:49"
[7]=>
string(19) "2017-06-21 10:25:49"
["ip"]=>
string(9) "127.0.0.1"
[8]=>
string(9) "127.0.0.1"
["user_agent"]=>
string(121) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
[9]=>
string(121) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
["browser"]=>
string(13) "Google Chrome"
[10]=>
string(13) "Google Chrome"
["browser_version"]=>
string(2) "58"
[11]=>
string(2) "58"
["os"]=>
string(28) "Mac OSX 10 (Unknown Version)"
[12]=>
string(28) "Mac OSX 10 (Unknown Version)"
["total"]=>
string(3) "510"
[13]=>
string(3) "510"
["date_only"]=>
string(4) "2017"
[14]=>
string(4) "2017"
}
}
现在,在数组合并之后,我应该得到一个包含 2 个数据键的数组,2016 和 2017,但我得到了一个包含 3 个键的数组,它不会用相同的键覆盖数组。
$final = array_merge($results,$results_from_db);
array(3) {
[0]=>
array(11) {
["id"]=>
string(1) "0"
[0]=>
string(1) "0"
["user_id"]=>
string(1) "0"
["entry_id"]=>
int(0)
["user_name"]=>
string(0) ""
[3]=>
string(0) ""
["action"]=>
string(11) "banner view"
[4]=>
string(11) "banner view"
["entry_details"]=>
string(0) ""
["created"]=>
string(4) "2016"
["total"]=>
int(0)
}
[1]=>
array(11) {
["id"]=>
string(1) "0"
[0]=>
string(1) "0"
["user_id"]=>
string(1) "0"
["entry_id"]=>
int(0)
["user_name"]=>
string(0) ""
[3]=>
string(0) ""
["action"]=>
string(11) "banner view"
[4]=>
string(11) "banner view"
["entry_details"]=>
string(0) ""
["created"]=>
string(4) "2017"
["total"]=>
int(0)
}
[2]=>
array(30) {
["id"]=>
string(2) "52"
[0]=>
string(2) "52"
["user_id"]=>
NULL
[1]=>
NULL
["entry_id"]=>
string(1) "2"
[2]=>
string(1) "2"
["user_name"]=>
NULL
[3]=>
NULL
["action"]=>
string(11) "banner view"
[4]=>
string(11) "banner view"
["entry_details"]=>
string(4) "null"
[5]=>
string(4) "null"
["entry_type"]=>
string(6) "banner"
[6]=>
string(6) "banner"
["created"]=>
string(19) "2017-06-21 10:25:49"
[7]=>
string(19) "2017-06-21 10:25:49"
["ip"]=>
string(9) "127.0.0.1"
[8]=>
string(9) "127.0.0.1"
["user_agent"]=>
string(121) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
[9]=>
string(121) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
["browser"]=>
string(13) "Google Chrome"
[10]=>
string(13) "Google Chrome"
["browser_version"]=>
string(2) "58"
[11]=>
string(2) "58"
["os"]=>
string(28) "Mac OSX 10 (Unknown Version)"
[12]=>
string(28) "Mac OSX 10 (Unknown Version)"
["total"]=>
string(3) "510"
[13]=>
string(3) "510"
["date_only"]=>
string(4) "2017"
[14]=>
string(4) "2017"
}
}
为什么会这样?正常吗?
信息:PHP 5.6.30 (cli)(构建时间:2017 年 2 月 7 日 16:18:37)版权所有 (c) 1997-2016 PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend 技术
【问题讨论】:
-
阅读手册:“但是,如果数组中包含数字键,后面的值不会覆盖原来的值,而是会被追加。” php.net/manual/en/function.array-merge.php
-
你期望的结果数组是什么?哪个数组是
$results,哪个是$results_from_db?
标签: php arrays zend-framework