我有两个数组要比较,我不知道该怎么做.. 这是我的代码:
$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)
}
很抱歉,如果我的问题在语法上不正确,我的英语不是很好。 感谢您的帮助:)
答案 0 :(得分:0)
使用array_keys()
- 返回所有键或数组键的子集
array_diff()
- 计算数组的差异
答案 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