我想比较两个数组:一个包含可能的选项列表,另一个包含优先级。
这就是两个数组的组织方式:
foreach ($varsA as $varA) {
foreach ($varsB as $varB) {
$options[$varA][$varB] = $id;
$priority[$varA] = $priority + $priority[$varA];
}
}
这是$ options包含的内容:
array (
1 =>
array (
33307 => 'w',
33313 => '7',
),
2 =>
array (
33307 => 'w',
33313 => '7',
),
3 =>
array (
33307 => 'w',
33313 => '7',
),
4 =>
array (
33307 => '4',
33313 => '7',
),
)
这是$ priority包含的内容:
array (
1 => 5,
2 => 9,
3 => 9,
4 => 5,
)
我想复制$ options中的重复值,并保留具有最低优先级的唯一身份的值:
输出为:Array (1, 4)
因为1,2,3不是唯一的,1具有最小的优先级。
我使用以下函数删除重复项,但我不知道如何调整它以处理优先级:
super_magic($options) {
$result = array_map("unserialize", array_unique(array_map("serialize", $options)));
foreach ($result as $key => $value) {
if ( is_array($value) ) {
$result[$key] = super_magic($value);
}
}
return $result;
}
答案 0 :(得分:0)
这听起来像是一个非常专业的场景,没有特定于PHP的基础。话虽如此,我会查看http://php.net/manual/en/ref.array.php该页面,了解PHP函数的具体细节,以便使用PHP数组。我会研究像uksort()和uasort()
这样的函数答案 1 :(得分:0)
for ($x = 1; $x <= count($options); $x++) {
for ($i = 1; $i <= count($options); $i++) {
if (array_key_exists($x, $options) && array_key_exists($i, $options)) {
if ($x != $i) {
$diff = array_diff($options[$x], $options[$i]);
if(empty($diff)) {
if ($priority[$x] >= $priority[$i]){
unset($options[$x]);
}
}
}
}
}
}