php 对比两个数组中的值是否相等

$a = [‘1‘,‘2‘,‘4‘,‘3‘];//提交答案
$b = [‘2‘,‘1‘,‘3‘];//正确答案
$state = $this->diffArray($b, $a);
echo ‘<pre>‘;
print_r($state);die;
    /**
     * 以第一个参数为主进行进行比较
     * **/
    public  function diffArray($arr1 , $arr2 ){
        $arrRet = array();
        #针对关联数组
        if($this->is_assoc($arr1) && $this->is_assoc($arr2) ){
            if (empty($arr1)) {
                $arr1 = array();
            }
            if (empty($arr2)) {
                $arr2 = array();
            }

            foreach ($arr1 as $key => $value){
                if(!in_array($key, array_keys($arr2))){
                    if(!array_key_exists($key, $arrRet)){
                        array_push($arrRet, $key);
                    }
                    continue;
                }
                if($arr1[$key] !== $arr2[$key]){
                    if(!array_key_exists($key, $arrRet)){
                        array_push($arrRet, $key);
                    }
                }
                #针对元素为数组的情况
                if(is_array($value)){
                    array_merge($arrRet,$this->diffArray($value,$arr2[$key]));
                }
            }
        }elseif($this->is_assoc($arr1)===false && $this->is_assoc($arr2)===false) {#针对索引数组
            $arrRet = array_merge(array_diff($arr1, $arr2),array_diff($arr2, $arr1));
        }else {
            new Exception("数组类型不一致!");
        }
        return $arrRet;
    }

    /**
     * 判断是否为关联数组
     * **/
    private  function is_assoc($arr) {
        if(!is_array($arr)) return -1;
        return !(array_values($arr) === $arr);
    }
Array
(
    [0] => 4
)

原文地址:https://www.cnblogs.com/ghjbk/p/10012772.html

时间: 2024-10-01 21:32:22

php 对比两个数组中的值是否相等的相关文章

Java中对比两个对象中属性值[反射、注解]

在Java中通常要比较两个对象在修改前与修改后的值是否相同,一般我们采用的是反射技术获取对象的get方法[或其他的方法]获取值并做比较.如果系统将修改的属性名称也显示出来,这样就能更直观的显示类中的哪一个属性的值被修改了.然后Java中只能获取属性的名称,也就是英文标识的属性名,但是一般我们都会在属性后面添加属性的注释,但是Java不提供注释获取的方法.所以我们只能使用另外一种方式来将属性和属性注释关联起来,这就是Java中的@Annotation. public static  Map<Str

C语言:返回两个数组中第一个元素的指针,并输出这个值

// //  main.c //  Pointer_search // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:通过指针查找,实现比较两个有序数组中的元素,输出两个数组中的第一个相同的元素值. #include <stdio.h> int *searchSameElement(int *a,int *b,int len1,int len2); int ma

javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除splice(需明确位置) 9.数组遍历 10.jQuery根据元素值删除数组元素的方法 数组常见操作包含了 增.删.查.改.插入.交集.并集 1.数组整体元素修改 //map,给数组每个元素加1 输出[1,2,3] $.map([0,1,2],function(n){ return n+1; })

PHP 使用用户自定义的比较函数对数组中的值进行排序

原文:PHP 使用用户自定义的比较函数对数组中的值进行排序 usort (PHP 4, PHP 5) usort —      使用用户自定义的比较函数对数组中的值进行排序 说明 bool usort        ( array &$array       , callable $cmp_function       ) 本函数将用用户自定义的比较函数对一个数组中的值进行排序.如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数. Note: 如果两个成员比较结果相同,则它们在排

leetcode的题4:给定两个有序数组,求两个数组的中间值。

我的思路是,既然是有序数组,就可以按照归并排序法的思路,按照最后的归并过程. 建立一个新的数组,并对两个数组及归并数组目前的位置分别编号i,j,k. 将两个数组中较小的值推入i的位置,然后将被提取数据的数组及归并数组索引+1. 这个过程中需要考虑的问题是如果其中一个数组已经全部提取完成应如何处置. 以下是我的代码: class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<i

PHP usort 使用用户自定义的比较函数对数组中的值进行排序

From: http://www.php100.com/cover/php/2395.html usort (PHP 4, PHP 5) usort — 使用用户自定义的比较函数对数组中的值进行排序 说明 bool usort ( array &$array , callback $cmp_function ) 本函数将用用户自定义的比较函数对一个数组中的值进行排序.如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数. 比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分

Java比较两个数组中的元素是否相同的最简单方法

呵呵呵,实现Java比较两个数组中的元素是否相同的功能你是怎么做的?看下面最简单方法: import java.util.Arrays; public class Test { /** * Java比较两个数组中的元素是否相同 */ public static void main(String[] args) { String [] array1 = {"1","2","3"}; String [] array2 = {"3"

Java对数组的操作(三)—比較两个数组中的元素是否同样的最简单方法

呵呵呵,实现Java比較两个数组中的元素是否同样的功能你是怎么做的?看以下最简单方法: import java.util.Arrays; public class Test { /**                 * Java比較两个数组中的元素是否同样                 */                public static void main(String[] args) {                        String [] array1 = {"1

C 语言:返回两个数组中第一个相同元素的指针(我用了loop 、goto loop标签)

// //  main.c //  Pointer_search // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:通过指针查找,实现比较两个有序数组中的元素,输出两个数组中的第一个相同的元素值. #include <stdio.h> int *searchSameElement(int *a,int *b,int len1,int len2); int ma