21,887
社区成员
发帖
与我相关
我的任务
分享
$ar = array(
array('C1' => 'a', 'C2' => 'c', 'O1' => 0, 'O2' => 0),
array('C1' => 'e', 'C2' => 'a', 'O1' => 0, 'O2' => 0),
array('C1' => 'a', 'C2' => 'b', 'O1' => 0, 'O2' => 0),
array('C1' => 'd', 'C2' => 'c', 'O1' => 0, 'O2' => 0),
array('C1' => 'g', 'C2' => 'y', 'O1' => 0, 'O2' => 0),
array('C1' => 'd', 'C2' => 't', 'O1' => 0, 'O2' => 0),
array('C1' => 'b', 'C2' => 'n', 'O1' => 0, 'O2' => 0),
array('C1' => 'a', 'C2' => 'r', 'O1' => 0, 'O2' => 0),
array('C1' => 'y', 'C2' => 'b', 'O1' => 0, 'O2' => 0),
);
$dict = array();
foreach($ar as $v) {
if(! in_array($v['C2'], $dict)) $dict[] = $v['C2'];
if(! in_array($v['C1'], $dict)) {
$n = array_search($v['C2'],$dict);
array_splice($dict, $n, 0, $v['C1']);
}
}
$dict = array_flip($dict);
$e = array_filter($ar,
function($r) use ($dict) {
return $dict[$r['C2']] < $dict[$r['C1']];
});
print_r($dict);
print_r($e);
权重数组Array
(
[e] => 0
[a] => 1
[d] => 2
[c] => 3
[b] => 4
[g] => 5
[y] => 6
[t] => 7
[n] => 8
[r] => 9
)
失败的行Array
(
[8] => Array
(
[C1] => y
[C2] => b
[O1] => 0
[O2] => 0
)
)
$AK=array();
foreach ($a as $k=>$v)
{
$index2=array_search($v['C2'],$AK);
if($index2===false){
$AK[]=$v['C2'];
}
$index1=array_search($v['C1'],$AK);
if($index1===false){
array_splice($AK,$index2,0, array($v['C1']));
}
if($index1!==false || $index1!==false){
foreach ($a as $k2=>$v2)
{
$index2=array_search($v2['C2'],$AK);
$index1=array_search($v2['C1'],$AK);
if($index1>$index2){
unset($AK[$index1]);
array_splice($AK,$index2,0, array($v2['C1']));
}
}
}
}
结果
C1 O1 O2 C2
a 1 6 c
e 0 1 a
a 1 4 b
d 5 6 c
g 2 3 y
d 5 7 t
b 4 8 n
a 1 9 r
y 3 4 b
0个错误
<?php
$a = array(
array('C1' => 'a', 'C2' => 'c', 'O1' => 0, 'O2' => 0),
array('C1' => 'e', 'C2' => 'a', 'O1' => 0, 'O2' => 0),
array('C1' => 'a', 'C2' => 'b', 'O1' => 0, 'O2' => 0),
array('C1' => 'd', 'C2' => 'c', 'O1' => 0, 'O2' => 0),
array('C1' => 'g', 'C2' => 'y', 'O1' => 0, 'O2' => 0),
array('C1' => 'd', 'C2' => 't', 'O1' => 0, 'O2' => 0),
array('C1' => 'b', 'C2' => 'n', 'O1' => 0, 'O2' => 0),
array('C1' => 'a', 'C2' => 'r', 'O1' => 0, 'O2' => 0),
array('C1' => 'y', 'C2' => 'b', 'O1' => 0, 'O2' => 0),
);
$AK=array();
foreach ($a as $k=>$v)
{
$index=array_search($v['C2'],$AK);
$index2=array_search($v['C1'],$AK);
if($index===false){
$AK[]=$v['C2'];
}
if($index2===false){
array_splice($AK,array_search($v['C2'],$AK),0, array($v['C1']));
}
}
//rsort($AK);
$err=0;
echo "<table>";
echo "<tr>";
echo "<th width='100'>C1</th>";
echo "<th width='100'>O1</th>";
echo "<th width='100'>O2</th>";
echo "<th width='100'>C2</th>";
echo "<th width='100'></th>";
echo "</tr>";
foreach ($a as $k=>$v)
{
echo "<tr>";
echo "<td>".$v['C1']."</td>";
$v['O1']=array_search($v['C1'],$AK);
$v['O2']=array_search($v['C2'],$AK);
echo "<td>".$v['O1']."</td>";
echo "<td>".$v['O2']."</td>";
echo "<td>".$v['C2']."</td>";
if($v['O1']>$v['O2']){
echo "<td>◆</td>";
$err++;
}else{
echo "<td></td>";
}
echo "</tr>";
}
echo "</table><br>";
echo $err."个错误";
?>
结果是
C1 O1 O2 C2
a 1 3 c
e 0 1 a
a 1 4 b
d 2 3 c
g 5 6 y
d 2 7 t
b 4 8 n
a 1 9 r
y 6 4 b ◆
1个错误