2017-05-05 200 views
1

基本上我想比较多维数组内数组, 所以我想大家比较与等类别1针锋相对,2类对其他操作搜索等等等等多维数组里面比较阵列

所以我真的想要做的是:

比较每个类别互相用这个公式

与 - 荣获= X

然后找出谁拥有最低的号码,然后updat e数据库中每个类别的最后一名幸存者(获奖者)

关于我如何解决这个问题的任何想法?

$arr; 
$stmt = $dbCon->prepare(" SELECT versus, won, imgId, category FROM rating_versus "); 
    $stmt->execute(); 
    $stmt->bind_result($versus, $won, $imgId, $category); 
    while ($stmt->fetch()) { 
     $arr[] = array('category' => $category, 'id' => $imgId, 'versus' => $versus, 'won' => $won); 
//  echo $imgId . "<br> Versus: " . $versus . "<br> Won: " . $won . "<br> <br>"; 
    } 
$stmt->close(); 

这将输出类似这样

array(9) { 
[0]=> array(4) { ["category"]=> int(1) ["id"]=> int(1) ["versus"]=> int(42) ["won"]=> int(21) } 
[1]=> array(4) { ["category"]=> int(1) ["id"]=> int(5) ["versus"]=> int(47) ["won"]=> int(24) } 
[2]=> array(4) { ["category"]=> int(1) ["id"]=> int(13) ["versus"]=> int(47) ["won"]=> int(23) } 
[3]=> array(4) { ["category"]=> int(2) ["id"]=> int(2) ["versus"]=> int(45) ["won"]=> int(19) } 
[4]=> array(4) { ["category"]=> int(2) ["id"]=> int(4) ["versus"]=> int(49) ["won"]=> int(25) } 
[5]=> array(4) { ["category"]=> int(2) ["id"]=> int(7) ["versus"]=> int(44) ["won"]=> int(25) } 
[6]=> array(4) { ["category"]=> int(3) ["id"]=> int(3) ["versus"]=> int(47) ["won"]=> int(29) } 
[7]=> array(4) { ["category"]=> int(3) ["id"]=> int(6) ["versus"]=> int(50) ["won"]=> int(18) } 
[8]=> array(4) { ["category"]=> int(3) ["id"]=> int(9) ["versus"]=> int(45) ["won"]=> int(24) } 
} 
+0

我们希望你尝试自己**编写代码**。在[**做更多的研究**之后](https://meta.stackoverflow.com/q/261592/1011527)如果你有问题**发布你已经尝试了**的**明确的解释不工作**并提供[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。阅读[如何问](http://stackoverflow.com/help/how-to-ask)一个很好的问题。请务必[参观](http://stackoverflow.com/tour)并阅读[this](https://meta.stackoverflow.com/q/347937/1011527)。 –

+0

问题是我无法找到关于这个问题的任何东西,一切都是关于两个数组或比较两个不同的多维数组,并没有像我想要做的那样:)所以一个指针会非常有用,因为我不知道要去哪里与此 –

+0

所以我挣扎着如何解决这样的问题的逻辑 –

回答

0

要找到赢家,你不需要消除一个接一个,谁的得分最低。

获胜者是谁的得分最高。

所以,你的代码应该像下面

$arr; $stmt = $dbCon->prepare(" SELECT versus, won, imgId, category FROM rating_versus "); 
$stmt->execute(); 
$stmt->bind_result($versus, $won, $imgId, $category); 
$winners=array(); 
while ($stmt->fetch()) { 
    $arr[] = array('category' => $category, 'id' => $imgId, 'versus' => $versus, 'won' => $won); 
    if(isset($winners[$category])) { 
      $curmax = $winners[$category]['won']; 
      if($won>$curmax) { 
       $winners[$category] = array('id'=>$imgId, 'won' => $won); 
      } 
    } else { 
     $winners[$category] = array('id'=>$imgId, 'won' => $won); 
    } 
//  echo $imgId . "<br> Versus: " . $versus . "<br> Won: " . $won . "<br> <br>"; 
} 
$stmt->close(); 
print_r($winners); 

这应该适用于这种情况下

+0

@ iiiml0sto1我不明白,但如果你想找到最低分的ID,对于每个类别,然后我会更新代码。这是你需要的吗? –

+0

嗯,因为有些人可能比其他人更有投票权,所以为了公平起见,我必须想出一个解决方案..但我会修改它,以解决任何可能出现的问题。 但是,非常感谢您向我展示了如何解决这样的逻辑问题,如果数据大于数组中的数据,它就会使得数组更新并进行更新:) –

+0

没有它的一切都好,它确实不要让它找到最低分,它使得它一切公平无论如何:) –