0

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

$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

4 回答 4

0
于 2013-09-12T11:56:28.173 回答
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)

于 2013-09-12T11:58:58.950 回答
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;
}
于 2013-09-12T12:00:11.813 回答
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
于 2013-09-12T12:11:14.613 回答