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

Posted ノGHJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
)

以上是关于php 对比两个数组中的值是否相等的主要内容,如果未能解决你的问题,请参考以下文章

PHP 两字符串比较,值相同 对比却不相等

JS学习之--比较两个Object数组是否相等

PHP - 检查两个数组是不是相等

php 判断两个数组是否相等

php 判断两个数组是否相等

String转json,多层json解析,并使用JsonElement对比两个json对象的值是否相等