比较数组结构

时间:2013-09-12 11:51:09

标签: php function

我有两个数组要比较,我不知道该怎么做.. 这是我的代码:

$configStructure =
array('name'=>'Example','description'=>'Example','user'=>'Blabla');

这个数组(上图)是其他配置的结构或模式数组。

$config =
array('name'=>'Application name','desc'=>'My description of app','user'=>'Alex');

我想创建一个比较这些数组的函数。

function checkStructure($configStructure, $config){
//the function, here will return false because the $config don't have the same structure of $configStructure(description is replace by desc)
}

很抱歉,如果我的问题在语法上不正确,我的英语不是很好。 感谢您的帮助:)

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

function checkStructure($configStructure, $config) {
    if (array_diff(array_keys($configStructure), array_keys($config))) {
        return false;
    }
    return true;
}

$configStructure = array('name' => 'Example', 'description' => 'Example', 'user' => 'Blabla');
$config = array('name' => 'Application name', 'desc' => 'My description of app', 'user' => 'Alex');

var_dump(checkStructure($configStructure, $config));将返回bool(false)

'desc'更改为'description'将返回bool(true)

答案 2 :(得分:0)

请尝试此功能。

function checkStructure($configStructure, $config) {
$arr_key1 = array_keys($configStructure);
$arr_key2 = array_keys(config);

if(count($arr_key1) != count($arr_key2)){
return false;
}

foreach($arr_key1 as $val){
if(!in_array($val,$arr_key2))
return false;
}
return true;
}

答案 3 :(得分:0)

这是另一种只检查所需密钥的解决方案:

$configStructure=array('name'=>'Example','description'=>'Example','user'=>'Blabla');
$config=array('name'=>'Application name','desc'=>'My description of app','user'=>'Alex');

function check($struct,$arr){
 foreach ($struct as $k => $v) if (!array_key_exists ($k,$arr)) return 0;
 return 1;
}
echo check($configStructure,$config);

// 0: the required keys ar **not** all there
// 1: all required keys are set