当前位置: 首页 > 知识库问答 >
问题:

使用相同键“不”覆盖的数组合并

阳俊德
2023-03-14

所以我有以下 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个数据键的数组,20162017,但是我得到了一个具有3个键的数组。

$array_merge结果,$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) (构建时间: Feb 7 2017 16:18:37) 版权所有 (c) 1997-2016 PHP 组 Zend Engine v2.6.0, 版权所有 (c) 1998-2016 Zend Technologies

共有2个答案

宁锐
2023-03-14

array_replace() 将用第二个子数组覆盖您的第一个 2017 子数组:

var_export(array_replace($a,$b));

运算符,则ksort()将执行相同操作:

$overwrite=$b+$a;
ksort($overwrite);
var_export($overwrite);

一个演示链接,您可以在其中使用两个数组变量上的函数

array_merge()array_merge_recursive()将生成3个子数组。

即使您将键转换为类似< code>'2017'的字符串,< code>array_merge()仍会将它们视为数字,您将获得3个子数组。

如果在每个键前面加上#,那么就可以按预期使用arraymerge()。在所有键上尝试使用#[year],您将有两个合并的子数组。(您可以在上面的演示链接中自行测试)

花健
2023-03-14

输入数组中带有数字键的值将使用结果数组中从零开始的递增键重新编号。

http://php.net/manual/en/function.array-merge.php

 类似资料:
  • 问题内容: 在一个软件中,我将两个数组与函数合并。但是我需要将相同的数组(当然,具有相同的键)添加到现有数组中。 问题: 如您所见,错过了。 那么,如何将 所有这些 具有相同的键合并? 问题答案: 您需要使用而不是。当然,数组中只能有一个等于的键,但是关联的值将是包含和的数组。

  • 问题内容: 什么是重组的最佳方式进入?我需要将所有值键(无论是否为数组)合并到共享相同名称键的对象中 是的,我可以编写无限循环和介于两者之间的多个数组,但是是否有一个简单的快捷方式?谢谢! 问题答案: 这是一个选择:

  • 问题内容: 我对react.js还是很陌生,并且正在通过构建砌体样式布局进行试验。 我将每个元素呈现给DOM,然后需要遍历每个项目并根据前面的元素应用x和y位置。 初始模型如下所示: (我只显示了一个项目以使内容简短)。 完成循环并获取x和y数据后,我想将其应用于podStyle对象。我用以下数据调用setState: 这似乎从模型中删除了所有当前数据,而只剩下了podStyle数据。我是否误解了

  • Swagger用相同的路径和方法但不同的参数覆盖方法 我有一个带有Spring Boot 2.3.5.RELEASE,webflux和springfox 3.0.0的应用程序。我开发了两个具有相同路径但参数不同的GET方法,一个不接收参数并返回list,另一个返回findAll。 情况是,Swagger只生成其中一种方法的文档,有时是列表,有时是分页。我怎么能告诉swagger他们是不同的方法,并

  • 我正在尝试使用fscanf加载一些结构数组的默认值,这看起来像 数据按如下方式存储在文本文件中(使用不同的值重复多次): 我用fscanf/fscanf_s(尝试两者)读取的值如下: 然而,VS2012在最后抛出了一个异常,称列表已损坏。调试显示,在阅读了上述示例文本的前四行后,结构的“map”部分包含以下内容 其中X是未初始化的值。 似乎fscanf正在试图“null terminate”我的整

  • 本文向大家介绍java集合与数组的相同点和不同点,包括了java集合与数组的相同点和不同点的使用技巧和注意事项,需要的朋友参考一下 数组: 数组可以用来保存多个基本数据类型的数据,也可以用来保存多个对象。 数组的长度是不可改变的,一旦初始化数组时就指定了数组的长度(无论是静态初始化还是动态初始化)。 数组无法保存具有映射关系的数据。 集合: 集合是只用于存储数量不等的对象。 集合的长度是可变的。