请检查下面的数组,我需要比较值。我有两个阵列一个是
Array("Size"=>"Small","Color"=>"Red");
和第二个数组是
Array(Array("Name"=>"Size","Value"=>"Small"),
Array("Name"=>"Color","Value"=>"Red"),
);
现在,我想将第一个数组的大小与第二个数组的大小和第一个数组的颜色和第二个数组的颜色进行比较。我都需要匹配。短尺寸应该很小,颜色应为红色。请提前帮助。
请注意,您要搜索的功能是验证器。
刚刚为您编码了一个简单的:
$data = array(
'size' => 'small',
'color' => 'red',
);
$validator = array(
array(
'name' => 'size',
'value' => 'small',
),
array(
'name' => 'color',
'value' => 'red',
),
);
function validateData(array $data, array $validator, $validateSize = false)
{
if( $validateSize )
{
if( (count($data) != count($validator)) )
{
return false;
}
$found = array_keys($data);
$toFind = array();
foreach($validator as $vI)
{
$toFind[] = $vI['name'];
}
$toFind = array_unique($toFind);
if( count($found) != count($toFind) )
{
return false;
}
}
$validate = function($name, $val) use ($validator)
{
$return = null;
foreach($validator as $vItem)
{
if( $vItem['name'] === $name )
{
if( $vItem['value'] === $val )
{
if($return !== false)
{
$return = true;
}
}
else
{
$return = false;
}
}
}
if( is_null($return) )
{
$return = false;
}
return $return;
};
foreach($data as $k => $v)
{
if( !$validate($k, $v) )
{
return false;
}
}
return true;
}
如果数据数组仅包含 $validator
中允许的键/值对,则将返回true
,否则否则。
您还可以通过将$validateSize
设置为true
。
希望它能有所帮助。
您的代码似乎没有多大意义,但在这里:
if ( $array1['Size'] === $array2[0]['Value'] && $array1['Color'] === $array2[1]['Value'] ) { /* code here */ }
您的问题不太清楚,但是根据我的理解,您想要这样的东西。
$a1 = Array("Size"=>"Small","Color"=>"Red");
$a2 = Array(
Array("Name"=>"Size","Value"=>"Small"),
Array("Name"=>"Color","Value"=>"Red"),
);
foreach($a2 as $k=>$v) {
if($v['Name'] == "Size") {
if($v['Value'] == $a1['Size']) {
// Do you stuff
}
}
else if($v['Name'] == "Color") {
if($v['Value'] == $a1['Color']) {
// Do you stuff
}
}
}