Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较两个多维数组_Php_Arrays - Fatal编程技术网

Php 比较两个多维数组

Php 比较两个多维数组,php,arrays,Php,Arrays,我有这个阵列: $default['products']['categories']['list'] = 0; $default['products']['categories']['search'] = 0; $default['products']['categories']['delete'] = 0; $default['products']['categories']['create'] = 0; $default['products']

我有这个阵列:

        $default['products']['categories']['list'] = 0;
    $default['products']['categories']['search'] = 0;
    $default['products']['categories']['delete'] = 0;
    $default['products']['categories']['create'] = 0;
    $default['products']['categories']['edit'] = 0;

    $default['products']['product']['list'] = 0;
    $default['products']['product']['search'] = 0;
    $default['products']['product']['delete'] = 0;
    $default['products']['product']['create'] = 0;
    $default['products']['product']['edit'] = 0;
    $default['products']['product']['info'] = 0;
    $default['products']['product']['get_barcode_img'] = 0;
    $default['products']['product']['update_amount'] = 0;

    $default['api']['version'] = 0;

    $default['user']['create'] = 0;
    $default['user']['delete'] = 0;
    $default['user']['resetpassword'] = 0;
现在我想将它与另一个数组进行比较,以检查第二个数组中是否缺少某些内容

        $2nd['products']['categories']['list'] = 0;
    $2nd['products']['categories']['search'] = 0;
    $2nd['products']['categories']['delete'] = 0;
    $2nd['products']['categories']['create'] = 0;
    $2nd['products']['categories']['edit'] = 0;

    $2nd['products']['product']['list'] = 0;
    $2nd['products']['product']['search'] = 0;
    $2nd['products']['product']['delete'] = 0;
    $2nd['products']['product']['create'] = 0;
    $2nd['products']['product']['edit'] = 0;
    $2nd['products']['product']['info'] = 0;
    $2nd['products']['product']['get_barcode_img'] = 0;
    $2nd['products']['product']['update_amount'] = 0;

    $2nd['api']['version'] = 0;

因此,我想检测“user”元素是否缺失,然后将缺失的元素插入第二个数组中。下面的示例将检查
$userArray
是否包含
$default
顶层的所有字段。如果缺少什么,它会添加它。通过这种方式,您将不会覆盖用户指定的任何字段(在顶层)

<?php

//Your array of default permissions
$default = array(
        "products" => array(
                "categories" => array(
                        "list" => 0,
                        "search" => 0,
                        "delete" => 0,
                        "create" => 0,
                        "edit" => 0,
                    ),
                "product" => array(
                        "list" => 0,
                        "search" => 0,
                        "delete" => 0,
                        "create" => 0,
                        "edit" => 0,
                        "info" => 0,
                        "get_barcode_img" => 0,
                        "update_amount" => 0,
                    )
            ),
        "api" => array(
                "version" => 0,
            ),
        "user" => array(
                "create" => 0,
                "delete" => 0,
                "resetpassword" => 0,
            ),          
    );


//The user specified array of permissions, missing everything at "user" section
$userArray = array(
        "products" => array(
                "categories" => array(
                        "list" => 0,
                        "search" => 0,
                        "delete" => 0,
                        "create" => 0,
                        "edit" => 0,
                    ),
                "product" => array(
                        "list" => 0,
                        "search" => 0,
                        "delete" => 0,
                        "create" => 0,
                        "edit" => 0,
                        "info" => 0,
                        "get_barcode_img" => 0,
                        "update_amount" => 0,
                    )
            ),
        "api" => array(
                "version" => 0,
            ),      
    );

foreach( $default as $key=>$group ){
    if( !isset( $userArray[$key] )) {
        $userArray[ $key ] = $group;
    }
}

echo "<pre>" . print_r( $userArray, 1 ) . "</pre>";

到目前为止你都试了些什么?我想要的不是一个问题应该怎么问。你能告诉我们你的尝试和有什么问题吗?嘿!不能将数字用作变量的第一个字符!你可以尝试递归。例如
函数比较($a,$b){if(is_array($a)&&is_array($b)){/*..这里递归*/}或者{return$a==$b}}
如果您信任您的数据,可能
数组替换递归