【发布时间】:2011-01-13 18:24:40
【问题描述】:
我想比较两个数组:一个包含可能的选项列表,另一个数组包含优先级。
这就是这两个数组的组织方式:
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;
}
【问题讨论】:
标签: php sorting comparison multidimensional-array