PHP:如果在多维数组中发现重复项,则合并相邻值

2024-04-14

我有一些 PHP 变量集,我正在从中创建一个多维数组。现在,在该数组中,我想检查特定的键([font]) 对于重复项。

如果发现重复项,则对应的相应值[lang] and [weight]应该合并。

这是我到目前为止所尝试的(这会取消设置/删除数组中的重复值):

// Font [0]
$font_1 = "Poppins";
$font_1_l = "Hindi, English";
$font_1_w = "700, 700i";

// Font [1]
$font_2 = "Lora";
$font_2_l = "Vietnamese, Japanese";
$font_2_w = "200, 300, 400, 400i";

// Font [2]
$font_3 = "Noto Sans";
$font_3_l = "Punjabi, Latin, Hindi";
$font_3_w = "200, 200i, 300, 300i, 400, 500";

// Font [3]
$font_4 = "Lora";
$font_4_l = "Greek, Roman, Vietnamese";
$font_4_w = "400, 400i, 500, 500b";

// Array of all the values
$font_f = array( array( 'font' => $font_1, 'lang' => $font_1_l, 'weight' => $font_1_w ), array( 'font' => $font_2, 'lang' => $font_2_l, 'weight' => $font_2_w ), array( 'font' => $font_3, 'lang' => $font_3_l, 'weight' => $font_3_w ), array( 'font' => $font_4, 'lang' => $font_4_l, 'weight' => $font_4_w ) ); 

// Printing the array for testing
echo "<pre>";
print_r( array_map("unserialize", array_unique(array_map("serialize", $font_f))) );

// Removing duplicates
$font_f_copy = $font_f; // Copy of $font_f for modification
$fonts = array(); // To get unique fonts

for( $i=0; $i<count($font_f); $i++ ) {
  if ( in_array( $font_f[$i]['font'], $fonts ) ) {
    unset($font_f_copy[$i]);
  }
  else {
    $fonts[] = $font_f[$i]['font'];
  }
}

// Printing $font_f_copy for testing
print_r($font_f_copy);

Output:

Array
(
    [0] => Array
        (
            [font] => Poppins
            [lang] => Hindi, English
            [weight] => 700, 700i
        )

    [1] => Array
        (
            [font] => Lora
            [lang] => Vietnamese, Japanese
            [weight] => 200, 300, 400, 400i
        )

    [2] => Array
        (
            [font] => Noto Sans
            [lang] => Punjabi, Latin, Hindi
            [weight] => 200, 200i, 300, 300i, 400, 500
        )

    [3] => Array
        (
            [font] => Lora
            [lang] => Greek, Roman, Vietnamese
            [weight] => 400, 400i, 500, 500b
        )

)
Array
(
    [0] => Array
        (
            [font] => Poppins
            [lang] => Hindi, English
            [weight] => 700, 700i
        )

    [1] => Array
        (
            [font] => Lora
            [lang] => Vietnamese, Japanese
            [weight] => 200, 300, 400, 400i
        )

    [2] => Array
        (
            [font] => Noto Sans
            [lang] => Punjabi, Latin, Hindi
            [weight] => 200, 200i, 300, 300i, 400, 500
        )

)

正如您在上面的代码中看到的,Font [1] 和 Font [3] 将具有相同的值[font]即洛拉,所以[lang] and [weight]对于字体 [1] 应合并[lang] and [weight]分别为字体 [3]。

我想知道如何继续实现这一目标。


我个人会做类似的事情,而不是 for 循环:

$result = [];
foreach ($font_f as $f) {
     if (isset($result[$f["font"]])) {
         $result[$f["font"]] = [ 
               "font" => $f["font"], 
               "lang" => $f["lang"]." ,".$result[$f["font"]]["lang"],
               "weight" => $f["weight"]." ,".$result[$f["font"]]["weight"]
         ]; 
     } else {
        $result[$f["font"]] = $f;
     }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:如果在多维数组中发现重复项,则合并相邻值 的相关文章

随机推荐

  • 使用 JDBC 获取所有外键

    我正在使用 postgreSQL 我正在尝试从表中获取所有外键 这是我目前正在使用的方法 public String getFKeyData String tableName int i throws SQLException Databa
  • RVM设置ruby默认,当打开新终端时删除RVM设置,返回系统ruby

    我刚买了一台新 MacBook Pro 并尝试在系统中设置 RVM 我安装了RVM并将默认设置为 rvm list default 默认 Ruby 用于新 shell ruby 1 9 3 p194 x86 64 If RVM is在 sh
  • 使用 javascript 对 html 脚本进行小修改,我无法解决[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是我的代
  • tkinter python 的全局变量问题

    我正在尝试创建一个简单的界面来访问具有第一个 最后一个 上一个和下一个功能的名称数组 但我用作位置跟踪器的全局变量不起作用 我已经提到过各种问题 非常感谢您的帮助 这是代码 from tkinter import Tk Label Entr
  • Google Maps API v3:地形图的自定义样式

    有谁知道是否可以为地形图创建自定义浮雕样式 显然 您可以为法线贴图创建自定义样式 但我也想更改地形的默认颜色渐变 非常感谢 您确实可以设置地形图的样式 我这里有一个 JSFiddle 演示了这一点 https jsfiddle net w7
  • Eclipse调试时断点错误如何解决?

    需要调试一个JAR文件 ProA 所以在项目中导入源代码 但是在尝试设置断点时 Eclipse 出现一个奇怪的错误 详情如下 Unable to install breakpoint due to missing line number a
  • 为什么 jQuery 1.9+ attr() 方法没有被弃用?

    作为一名 jQuery1 9 软件开发人员 我可以 弃用 使用attr 我日常工作中的方法 正如许多问题所表明的那样 prop 与 attr https stackoverflow com questions 5874652 prop vs
  • jQuery - 在函数之间共享变量

    这应该相当简单 我很确定我只是不明白 仅供参考 该网站使用 jQuery 在内容上运行 ajax load 在我的主父页面上 在标题中我有我的 nav load jQuery 代码
  • 如何从 cpp 文件修改 VS_VERSION_INFO

    当我去资源视图 gt myproject rc gt 版本 gt VS VERSION INFO我有可以更改的字段 可以通过cpp文件更改这些字段吗 所以我可以使用类似的东西 define FileDescription This is m
  • 在猫鼬中指定模式

    我想知道定义此模式的最佳方法是什么 Newsitem 只能有 1 个用户 ID 和 1 个任务 ID 一个任务可以属于多个新闻站点 一个用户可以属于多个新闻站点 我搜索过例子 但我想说的例子并不多 我怎样才能用 mongoose 和 mon
  • Node.js 中的 Json 到 csv

    我正在尝试在 node js 中将非常大的 json 转换为 csv 但它花费了太多时间 并且在转换时导致 100 cpu 占用 jsonToCsv function data var keys Object keys data 0 var
  • 在omniauth中命名的Rails路由

    我在routes rb中有这个 namespace api do namespace v1 do devise for users constraints format json controllers gt omniauth callba
  • 在 Eclipse 中调试时查看完整字符串

    在调试 Java 代码时 视图 变量 和 表达式 中的字符串仅显示到一定长度 之后 Eclipse 将显示 有什么方法可以检查整个字符串吗 这减轻了在各处添加日志语句进行调试的痛苦 在 变量 视图中 您可以右键单击 详细信息 窗格 显示字符
  • Firefox:从网页强制全屏模式

    我正在开发一个基于网络的数据库 需要通过firefox网络浏览器打开 因为一些css3元素 我希望页面以全屏模式自动打开 我不希望数据库的用户有权访问 Firefox 菜单项 无法完成如果您只是控制网页 网页中的控件不会导致浏览器实例本身发
  • TextEditingController 被废弃后被使用

    我创建了一个容器输入的表单 我循环遍历输入列表来创建表单 我的变量是 List fields label Strings firstName controller fnameController validator val gt Valid
  • 如何使用 Neo4jTemplate 进行合并而不是创建

    我当前正在迭代一个数组 其中每个索引包含两个节点和一个关系 Part 1 gt Part 2 并且我使用 Neo4jTemplate save 方法将其保存到数据库中 但是 某些索引具有与其他节点有关系的重复节点 Part 2 gt Par
  • 如何通过设备树配置 uio_dmem_genirq 驱动程序

    The uio dmem genirq https git kernel org pub scm linux kernel git stable linux stable git tree drivers uio uio dmem geni
  • 如何强制 IntelliJ 使用不同的主文件夹

    我有一台有两个硬盘的电脑 在第一个 SSD 磁盘中 我有 Windows 分区 C 在第二个磁盘 D raid 卷 中 我安装了所有程序 我还将我的用户文件夹 桌面 文档 下载 图片和视频 移动到D Users David 安装 Intel
  • 如何在 R 中使用相同的循环向量引用多个数据库?

    我需要通过组合 聚合和拆分数据帧来执行各种操作 这些行动需要连续几年重复 2000 年 2001 年 2002 年等 但是 我找不到一种方法来基于带有年份的循环字符串来引用多个数据框 一个例子 我想合并同一年的 3 个数据框 我当前的代码
  • PHP:如果在多维数组中发现重复项,则合并相邻值

    我有一些 PHP 变量集 我正在从中创建一个多维数组 现在 在该数组中 我想检查特定的键 font 对于重复项 如果发现重复项 则对应的相应值 lang and weight 应该合并 这是我到目前为止所尝试的 这会取消设置 删除数组中的重