在php中组合两个(或更多..)多维数组

2023-12-28

我有一个使用不同参数运行多次的查询。我正在使用 xml 解析器将结果返回给 jQuery。

我似乎无法找到一种方法来组合第一个“节点”上的结果而不覆盖第一个条目。

简化的代码示例:

$temp1 = returnArray(0);

$temp2 = returnArray(1);

$data = array_merge($temp1, $temp2);

print_r($data);

function returnArray($switch)
{
    if($switch == 0)
    {
        $data['data']['first'] = "something";
    } else {
        $data['data']['second'] = "something ELSE";
    }
    return $data;
}

结果打印出来Array ( [data] => Array ( [second] => something ELSE ) )- $temp2 正在覆盖 $temp1。我理解这是 array_merge() 的默认行为,这让我感到困惑。

我也尝试过做类似的事情$data = $temp1+$temp2; or...

$data = returnArray(0);

$data += returnArray(1);

prints Array ( [data] => Array ( [first] => something ) )

or...

$data = returnArray(0);

$data .= returnArray(1);
print_r($data);

prints ArrayArray

我最终把这个组合在一起:

$data['data'] = returnArray(0);
$data['data'] = returnArray(1);

function returnArray($switch){
  if($switch == 0) return Array('first' => 'something');
  else return Array('second' => 'something else');
}

我对此不太满意......虽然它在这种情况下完成了工作,但当将来发生更复杂的情况时,它不会那么适用。

有没有更好的方法来获取两个关联的多维数组并将它们组合起来而不覆盖?

EDIT:

我希望该方法可重用、可扩展,并且能够处理 2 个以上具有 2 个以上维度的数组。


PHP实际上提供了一个函数叫做array_merge_recursive() http://php.net/manual/en/function.array-merge-recursive.php这正是在这种类型的场景中使用的。来自文档页 http://php.net/manual/en/function.array-merge-recursive.php#refsect1-function.array-merge-recursive-description:

array_merge_recursive()合并了 一个或多个数组的元素 在一起,以便一个人的价值观 附加到上一个的末尾 一。它返回结果数组。

如果输入数组具有相同的 字符串键,然后是这些键的值 键被合并在一起形成一个 数组,这是递归完成的, 这样如果其中一个值是 数组本身,该函数将合并 它与相应的条目 还有另一个数组。然而,如果 数组具有相同的数字键, 后面的值不会覆盖 原始值,但将被附加。

Example:

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

Output:

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在php中组合两个(或更多..)多维数组 的相关文章

随机推荐

  • 收集信用卡信息 - 并非收取付款

    我正在 Linux 服务器上使用 PHP 和 MySQL 进行工作 我有一个要求 我试图说服他们 从用户那里收集信用卡信息 以便我们公司可以使用卡号来保留酒店房间参加会议 我们根本不会自己给卡充值 而是将其发送到酒店 然后 我需要能够下载
  • 参数的默认值在 SSRS 2008 R2 中不起作用

    我有一个报告 BIDS SSRS 2008 R2 其中有一个参数 允许用户从列表 比如说销售区域 中选择多个值 不过 由于列表很长 大约有 15 个可能的值 我希望默认选择最常用的 2 个值 我在 参数属性 gt gt 默认值 对话框中进行
  • C# 通过句柄 (hWnd) 32 和 64 位获取路径/文件名

    我得到以下代码来通过句柄获取路径 文件名 DllImport user32 dll CharSet CharSet Auto SetLastError true private static extern int GetWindowThre
  • 用于具有 REST API 身份验证的 WebRTC 的 TURN 服务器

    我正在尝试为 webRTC 设置 rfc5766 turn server TURN 服务器here https code google com p rfc5766 turn server 我能够使用 TURN 服务器成功转发我的视频turn
  • Django 验证 ImageField 尺寸等

    我有一个自定义的清洁方法如下 def clean image self image self cleaned data image if image from django core files images import get imag
  • 没有找到现成的 kinect?

    我是 Kinect 编程的初学者 我已经安装了windows sdk 我尝试在开发人员中运行示例 然而 它说 没有找到准备好的kinect 我知道知道为什么 有人能帮我解决这个问题吗 多谢 Yuanhui 我也是初学者 其实我昨天刚拿到ki
  • ServiceStack“新”api 和异步等待

    服务堆栈版本 3 我很熟悉https github com ServiceStack ServiceStack wiki New API https github com ServiceStack ServiceStack wiki New
  • jsPlumb:拖动新连接应删除现有连接

    使用 jsPlumb 我设法进行了以下设置 有多个节点 其作用类似于特殊类型流程图中的节点 每个节点都有一个可以将连接丢弃到的目标 每个节点都有零个 一个或多个出口 每个出口作为jsPlumb源 最多允许有1个连接 先举个小例子 http
  • Internet Explorer innerHTML 输出不带引号的属性

    我正在使用 IE 8 并尝试设置元素 Id 属性 然后我将该元素附加到父元素并检查它的innerHTML 我看到的问题是 id 属性缺少双引号 起初我认为这可能是因为我使用了 setAttribute 属性 而这在 IE 8 中可能有问题
  • Git Pull:更改身份验证

    我对 git 很陌生 我在服务器 A 上设置了一个存储库 其中通过 ssh rsa 密钥进行访问 我在那里有一些用户 包括我自己 现在我做git clone在我的本地计算机上获取本地副本 进行更改 然后push origin master
  • html 在所有设备上保持相同的字符大小

    我用几个输入按钮做了一个关于 html 的练习 http bullmalay appspot com http bullmalay appspot com 我在手机上访问它 但我发现文字尺寸真的很小 我认为原因在于分辨率 谁能帮我调整一下文
  • Java 中的连接字符串是否总是会导致在内存中创建新字符串?

    我有一条很长的字符串 不适合屏幕的宽度 例如 String longString This string is very long It does not fit the width of the screen So you have to
  • 无法使用带有节点的express使用res.send()发送数字

    我正在尝试使用节点中的 Express 获得 imdb 评级 但我很挣扎 电影 json id 3962210 order 4 361276149749756 1988 fields year 2015 title David and Go
  • 单击时导航项标题消失

    我创建了带有导航视图的抽屉 我有正在调用其他活动的导航项目 问题是当我单击导航项时 其他活动启动 如果我返回主活动并打开抽屉 则单击的导航项的标题消失 只有我可以看到该项目的图标 code public class MainActivity
  • 带有文本、复选框、选择的 jQuery 表过滤器

    需要使用文本搜索 复选框和选择从表外部过滤表 PicNet 表过滤器 http www picnet com au resources tablefilter demo htmfor jQuery 适用于搜索和使用表外的复选框 尽管我找不到
  • Twitter Bootstrap - 100% 高度

    我正在尝试使用 twitter bootstrap 框架为我的应用程序设计一个管理面板 但我无法让我的布局正常工作 I was inspired by this design It would be a two column layout
  • 如何将不同的 DataFrame 组合成一个分组条形图

    我正在尝试复制答案this https stackoverflow com questions 65052443 creating a grouped bar plot with seaborn问题 我看不出我在做什么有什么不同 我的输出
  • 无法从 Linux 连接到 SQL Server

    我正在尝试连接到 CentOS 5 8 上的 SQL Server 2008 我正在使用 unixODBC 2 3 0 和 SQL Server ODBC 驱动程序 www microsoft com en us download deta
  • 链接描述文件中的 KEEP 是什么意思?

    The LD手册 http ftp gnu org old gnu Manuals ld 2 9 1 html mono ld html SEC2没有解释什么KEEP命令执行 下面是第三方链接描述文件的一个片段 其特点是KEEP 什么是KE
  • 在php中组合两个(或更多..)多维数组

    我有一个使用不同参数运行多次的查询 我正在使用 xml 解析器将结果返回给 jQuery 我似乎无法找到一种方法来组合第一个 节点 上的结果而不覆盖第一个条目 简化的代码示例 temp1 returnArray 0 temp2 return