Php:如何计算两个“相似”对象数组之间的差异?

2024-01-05

我有一个对象数组$tab这是表的“行”(即您可以通过“访问每一列”$tab[$i]->columnname.

我有另一个对象数组$tab_json这是 AJAX 调用的返回,其中包含:too,表的“行”(即您可以通过“访问每一列”$tab_json[$i]->columnname.

Both数组包含完全相同的列,但我只想“猜测”其中的哪些列$tab are not存在于$tab_json.

我当然知道数组相交 http://www.php.net/manual/fr/function.array-intersect.php and 数组差异 http://php.net/manual/fr/function.array-diff.php函数,但它们似乎在对象比较方面效果不佳。除非我错了?

这是我想要使用的示例,但有一个 Php 例外:

tab_json = PHP Catchable fatal error:  Object of class stdClass could not be converted to string in sample.php on line 112

只需复制粘贴并将其运行到文件中(php -f filename.php)。知道我应该怎么做吗?

<?php
$tab = array(
    (object)array(
        'id'          => 1,
        'titre'       => "Anchois",
        'attributs'   => array()
    ),  
    (object)array(
        'id'          => 4,
        'titre'       => "Jambon",
        'attributs'   => array()
    ),  
    (object)array(
        'id'           => 12, 
        'titre'        => "La Cabro d'or",
        'attributs'    => array(
            (object)array("id" => 1), 
            (object)array("id" => 8)
        )   
    )   
);


$tab_json = array (
    (object)array(
        'id' => 1,
        'titre' => 'Anchois',
        'attributs' =>
        array (
        ),  
    ),  
    (object)array(
        'id' => 4,
        'titre' => 'Jambon',
        'attributs' =>
        array (
        ),  
    ),  
    (object)array(
        'id' => 12, 
        'titre' => 'La Cabro d\'or',
        'attributs' =>
        array (
        ),  
    ),  
    (object)array(
        'id' => 25, 
        'titre' => 'Vin rouge ou rosé',
        'attributs' =>
        array (
        ),  
    ),  
    (object)array(
        'id' => 22, 
        'titre' => 'Crème oignons lardons',
        'attributs' =>
        array (
            (object)array(
                'id' => 1,
            ),  
            (object)array(
                'id' => 2,
            ),  
        ),  
    )   
);
echo "tab = "; var_export($tab); echo "\n";
echo "tab_json = "; var_export($tab_json); echo "\n";
echo "tab_json = "; var_export(array_diff($tab_json,$tab)); echo "\n";
?>

您可以使用array_udiff:

$difference = array_udiff($tab, $tab_json, function($a, $b) {
    return $a == $b;
});

简单的array_diff无法使用,因为它仅比较字符串值是否相同。运行此示例需要 PHP 5.3,但您可以将其调整为 PHP 5.2,将闭包移动到外部函数并将其名称作为第三个参数传递array_udiff.

请注意,顺序为array_udiff很重要。如果你通过了$tab_json首先你可以获得不同的结果。

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

Php:如何计算两个“相似”对象数组之间的差异? 的相关文章

随机推荐

  • Flutter iOS Firebase 动态链接推送带有链接值的命名页面

    目前我正在使用 Firebase 的动态链接来实现密码重置功能 在 Android 上 一切工作正常 如果应用程序被打开 我正在处理深层链接 另一方面 在 iOS 上它也可以工作 但是 Flutter 应用程序会推送一个带有链接值的额外命名
  • 由类型类形成的类型之间关系的术语

    面向对象编程使用 is a 继承 等术语 class Cat extends Animal cat is a animal 和 has a 组合 class Car engine Engine car has a engine 来描述类型之
  • 如何在 Gulp 中添加特定的 Bower 组件作为 IE8 条件块

    我有几个凉亭组件 其中我需要一些组件 例如json3 respondjs es5shim添加到 IE8 条件块中 在构建和服务中 如下所示 我应该如何继续编写任务 我找不到任何合适的例子gulp inject也wiredep对于这个问题 请
  • iOS 12 中不会弹出请求访问相机的权限

    根据苹果标准 我们需要获得访问用户摄像头的许可 所以我已经成功集成了相机 并且在iOS 11中工作正常 但目前 我正在测试相机功能 发现如果用户一次允许相机访问 即使在全新安装后 来自应用程序商店 同一个应用程序也不会请求许可 所以我的问题
  • 如何使用numpy从列表中随机选择n个元素?

    我有一个向量列表 gt gt gt import numpy as np gt gt gt num dim num data 10 5 gt gt gt data np random rand num data num dim gt gt
  • XOauth 是什么及其与 OAuth 的关系?

    一些 OpenSocial 容器使用xoauth security token用于签署请求 而不是oauth token and oauth token secret XOauth 是 OAuth 的替代品吗 谁支持 XOauth 官方规范
  • 复选框的最佳使用方法 - IOS swift

    我将从事一个将使用大量复选框的项目 我找到了如下的解决方案 但我知道这不是正确的方法 IBAction func btn box sender UIButton if btn box selected true btn box setBac
  • 检查当前时间是否在两个时间之间,可能存在单圈天数

    我有一个接受用户提交的系统 收到提交后 系统将遍历所有时间段以找到合适的时间段 问题是 如果结束时间到了第二天 它需要能够检查开始和结束时间 举个例子 时间段从当天晚上 10 30 开始 到第二天下午 4 00 结束 如果当前时间在晚上 1
  • 将 NSMutableSet 和 NSMutableOrderedSet 桥接在一起的协议

    In Swift 3 我希望能够创建一个协议 允许我添加元素并通过使用进行迭代for element in 该协议应该适用于两者NSMutableSet and NSMutableOrderedSet 因为它们不是从同一个类继承的 我知道有
  • Dask:Dataframe groupBy 上的独特方法

    我想知道在使用 Dask 进行 groupBy 聚合后是否可以获取给定列中唯一项目的数量 我在文档中没有看到类似的内容 它可以在 pandas dataframe 上使用并且非常有用 我已经看到一些与此相关的问题 但我不确定它是否已实施 有
  • 选择 null:D3 中 selectAll(null) 背后的原因是什么?

    我见过一些 D3 代码具有这样的用于附加元素的模式 var circles svg selectAll null data data enter append circle 我真的不明白这个片段 为什么选择null 按照我对D3的理解 如果
  • 在 CSS 中并排堆叠 Div

    我不想在这里问 但经过几个小时的挫败感后 我觉得我必须这么做 我有两个 可能更多 我想要并排的 div 他们的父div有固定的宽度并且overflow hidden所以我们一次最多只能看到一个div 问题是它们不会并排堆叠 我试过了floa
  • 使用 PHP 解析错误语法错误意外的文件结尾[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是什么意
  • 带有 bool 查询的 Elasticsearch Java Jest 客户端查询构建器范围

    我需要使用 Jest 客户端进行 Elasticsearch 查询 以将一些术语和日期与范围查询相匹配 所以我需要使用 Jest 执行带有范围查询的 bool 查询QueryBuilder有这样的请求 query range gte beg
  • 空手道框架和 TestNG

    Karate 框架支持 TestNG 吗 Karate 框架是否会像使用 JUnit 一样为 TestNG 生成任何 json 文件 Karate 曾经支持 TestNG 但现已弃用 这应该不是问题 因为 a Karate 不需要任何 Te
  • 每次更改控制器后自动重新启动 Rails 服务器

    任何正常更改后都不需要重新启动 Rails 服务器 但是 当我对应用程序控制器进行少量更改时 如果我不重新启动服务器 它们就不会应用 即使我写了糟糕的代码并故意犯了错误 旧的错误仍然存 在 我怎样才能改变它或验证它是否设置良好 我有在con
  • jQuery 自动完成:确定输入的文本是否不匹配

    我已经启动了 jQuery Autocomplete UI 1 6rc2 并运行良好 当用户选择一个项目时 它会使用关联的 ID 更新隐藏的表单值 当输入的文本与自动完成列表中的结果不匹配时 如何将隐藏表单值设置为 0 在本例中 我将创建一
  • 内使用
    几次

    我对 Spring 很陌生 我正在尝试使用 Spring MVC JSP JSTL 我的目标是制作包含用户列表的 JSP 并允许单独编辑每个用户 所以我想我应该使用单独的
  • 如何使用 MongoDB 和 Node.js 更新插入多个对象?

    假设我有一系列电影类型 如下所示 id 28 name Action id 12 name Adventure id 16 name Animation id 35 name Comedy id 80 name Crime id 99 na
  • Php:如何计算两个“相似”对象数组之间的差异?

    我有一个对象数组 tab这是表的 行 即您可以通过 访问每一列 tab i gt columnname 我有另一个对象数组 tab json这是 AJAX 调用的返回 其中包含 too 表的 行 即您可以通过 访问每一列 tab json