Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在php中查询这个数组以生成结果吗?还是应该在MySQL中进行查询?_Php_Mysql_Arrays - Fatal编程技术网

我可以在php中查询这个数组以生成结果吗?还是应该在MySQL中进行查询?

我可以在php中查询这个数组以生成结果吗?还是应该在MySQL中进行查询?,php,mysql,arrays,Php,Mysql,Arrays,在下面的数组中,我收集了一个结果表中的数据。此数据显示用户击败最多的玩家,无论是玩家1还是玩家2 [[{"player2_id":"31","player2_name":"Jamie Charles"}, {"player2_id":"31","player2_name":"Jamie Charles"}, {"player2_id":"31","player2_name":"Jamie Charles"}, {"player2_id":"31","player2_name":"Jamie Ch

在下面的数组中,我收集了一个结果表中的数据。此数据显示用户击败最多的玩家,无论是玩家1还是玩家2

[[{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player1_id":"31","player1_name":"Jamie Charles"},
{"player1_id":"31","player1_name":"Jamie Charles"},
{"player1_id":"31","player1_name":"Jamie Charles"},
{"player1_id":"32","player1_name":"steve downs"},   
{"player1_id":"31","player1_name":"Jamie Charles"}]]
如您所见,playerX\u id:31出现9次,5次为player2\u id,4次为player1\u id

(为了得到这个表,我必须运行2次查询,并将两个结果添加到表中——一个用于所讨论的用户为玩家1时,另一个用于用户为玩家2时)

基本上,我想从这些数据中做的就是看看什么
playerX_id
出现得最多,并取相应的名称

因此,我希望的输出是
Jamie Charles

我可以从这个数组中执行此操作,还是应该在MySQL级别执行此操作

这是我的桌子:

+----------------+-------------+------+-----+---------+----------------+
|字段|类型|空|键|默认|额外|
+----------------+-------------+------+-----+---------+----------------+
|结果| id | int(11)| NO | PRI | NULL |自动增量|
|社区| id | int(11)| NO | | NULL ||
|player1|u id | int(11)| NO | | NULL ||
|玩家1|u name | varchar(50)| NO | | NULL ||
|球员1队|瓦尔查尔(50)|否| |空||
|球员1球|内线(11)|无| |空||
|player1|u结果| varchar(3)|否| |空||
|球员2球|内线(11)|无| |空||
|player2|u结果| varchar(3)|否| |空||
|player2|u id | int(11)| NO | | NULL ||
|玩家2|u name | varchar(50)| NO | | NULL ||
|球员2队|瓦尔查尔(50)|否| |空||
|播放者1|u pts | int(11)| NO | | NULL ||
|播放者2分整(11)无空|
|日期|日期|否|空||
+----------------+-------------+------+-----+---------+----------------+

这是我的MySQL查询:

public function getTotalMostWinsAgainst($playerId){

    $returnValue = array();
    $sql = "SELECT player2_id, player2_name FROM `results` WHERE player1_id = '".$playerId."' AND player1_result = 'W'";

$result = $this->conn->query($sql);
    if($result != null && (mysqli_num_rows($result) >= 1)){
while($row = $result -> fetch_array(MYSQLI_ASSOC)){
   if(!empty($row)){
      $returnValue[] = $row;
   }
}
}

$sql = "SELECT player1_id, player1_name FROM `results` WHERE player2_id = '".$playerId."' AND player2_result = 'W'";

$result = $this->conn->query($sql);
    if($result != null && (mysqli_num_rows($result) >= 1)){
while($row = $result -> fetch_array(MYSQLI_ASSOC)){
 if(!empty($row)){
    $returnValue[] = $row;
   }
}
}
    return $returnValue;
} 


}
尝试:


这将根据玩家1获胜时最像玩家2的名称给出第一个结果顺序,反之亦然

您还可以显示数据库结构或查询吗?似乎只需一个查询就可以做到这一点
select member, count(*) Total
from 
(
select player2_name as member
from results
WHERE player1_id = 2 AND player1_result = 'W'
union all
select player1_name
from results
WHERE player2_id = 2 AND player2_result = 'W'

) AS T

group by member
order by Total desc
Limit 1